日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
深入剖析JAVA反射機(jī)制強(qiáng)大功能

本文向大家描述一下JAVA反射機(jī)制的概念,JAVA反射機(jī)制:“程序運(yùn)行時(shí),允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動(dòng)態(tài)語言”。從這個(gè)觀點(diǎn)看,Perl,Python,Ruby是動(dòng)態(tài)語言,C++,Java,C#不是動(dòng)態(tài)語言。

JAVA反射機(jī)制定義:  

JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語言的反射機(jī)制?! ?/p>

Java反射機(jī)制主要提供了以下功能:在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類;在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象;在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法;在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法;生成動(dòng)態(tài)代理?! ?/p>

有時(shí)候我們說某個(gè)語言具有很強(qiáng)的動(dòng)態(tài)性,有時(shí)候我們會(huì)區(qū)分動(dòng)態(tài)和靜態(tài)的不同技術(shù)與作法。我們朗朗上口動(dòng)態(tài)綁定(dynamicbinding)、動(dòng)態(tài)鏈接(dynamiclinking)、動(dòng)態(tài)加載(dynamicloading)等。然而“動(dòng)態(tài)”一詞其實(shí)沒有絕對(duì)而普遍適用的嚴(yán)格定義,有時(shí)候甚至像對(duì)象導(dǎo)向當(dāng)初被導(dǎo)入編程領(lǐng)域一樣,一人一把號(hào),各吹各的調(diào)?! ?/p>

一般而言,開發(fā)者社群說到動(dòng)態(tài)語言,大致認(rèn)同的一個(gè)定義是:“程序運(yùn)行時(shí),允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動(dòng)態(tài)語言”。從這個(gè)觀點(diǎn)看,Perl,Python,Ruby是動(dòng)態(tài)語言,C++,Java,C#不是動(dòng)態(tài)語言?! ?/p>

盡管在這樣的定義與分類下Java不是動(dòng)態(tài)語言,它卻有著一個(gè)非常突出的動(dòng)態(tài)相關(guān)機(jī)制:Reflection。這個(gè)字的意思是“反射、映象、倒影”,用在Java身上指的是我們可以于運(yùn)行時(shí)加載、探知、使用編譯期間完全未知的classes。換句話說,Java程序可以加載一個(gè)運(yùn)行時(shí)才得知名稱的class,獲悉其完整構(gòu)造(但不包括methods定義),并生成其對(duì)象實(shí)體、或?qū)ζ鋐ields設(shè)值、或喚起其methods1。這種“看透class”的能力(theabilityoftheprogramtoexamineitself)被稱為introspection(內(nèi)省、內(nèi)觀、反省)。Reflection和introspection是常被并提的兩個(gè)術(shù)語。  

Java如何能夠做出上述的動(dòng)態(tài)特性呢?

這是一個(gè)深遠(yuǎn)話題,本文對(duì)此只簡(jiǎn)單介紹一些概念。整個(gè)篇幅最主要還是介紹ReflectionAPIs,也就是讓讀者知道如何探索class的結(jié)構(gòu)、如何對(duì)某個(gè)“運(yùn)行時(shí)才獲知名稱的class”生成一份實(shí)體、為其fields設(shè)值、調(diào)用其methods。本文將談到j(luò)ava.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。


當(dāng)前名稱:深入剖析JAVA反射機(jī)制強(qiáng)大功能
文章鏈接:http://www.dlmjj.cn/article/djcsioj.html