說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請(qǐng)撥打電話 400 685 0732
全網(wǎng)監(jiān)測海量數(shù)據(jù)按需發(fā)布監(jiān)測預(yù)警
實(shí)時(shí)把握輿情動(dòng)態(tài)精準(zhǔn)追溯信息源頭
在學(xué)習(xí)java的過程當(dāng)中,我們經(jīng)常會(huì)使用到j(luò)ava反射,這種反射主要是指在運(yùn)行狀態(tài)的過程當(dāng)中,對(duì)于任何一個(gè)類別都能夠知道這個(gè)類別所屬的類型,因此現(xiàn)在判斷那點(diǎn)屬性的過程當(dāng)中經(jīng)常會(huì)用得上。那么java反射具體的作用是什么又該如何獲取?這就是我們今天所要了解的內(nèi)容。
java反射——java反射的作用
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)代理。
有時(shí)候我們說某個(gè)語言具有很強(qiáng)的動(dòng)態(tài)性,有時(shí)候我們會(huì)區(qū)分動(dòng)態(tài)和靜態(tài)的不同技術(shù)與作法。我們朗朗上口動(dòng)態(tài)綁定(dynamic binding)、動(dòng)態(tài)鏈接(dynamic linking)、動(dòng)態(tài)加載(dynamic loading)等。然而“動(dòng)態(tài)”一詞其實(shí)沒有絕對(duì)而普遍適用的嚴(yán)格定義,有時(shí)候甚至像面向?qū)ο螽?dāng)初被導(dǎo)入編程領(lǐng)域一樣,一人一把號(hào),各吹各的調(diào)。
一般而言,開發(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)語言。
盡管在這樣的定義與分類下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è)值、或喚起其methods。這種“看透class”的能力(the ability of the program to examine itself)被稱為introspection(內(nèi)省、內(nèi)觀、反省)。Reflection和introspection是常被并提的兩個(gè)術(shù)語。
java反射如何獲取
Java允許我們從多種管道為一個(gè)class生成對(duì)應(yīng)的Classobject。
Classobject誕生管道
示例:
1)運(yùn)用getClass()
注:每個(gè)class都有此函數(shù)
Stringstr=”abc”;
Classc1=str.getClass();
2)運(yùn)用Class.getSuperclass()
Buttonb=newButton();
Classc1=b.getClass();
Classc2=c1.getSuperclass();
3)運(yùn)用staticmethod——Class.forName()(最常被使用)
Classc1=Class.forName(“java.lang.String”);
Classc2=Class.forName(“java.awt.Button”);
Classc3=Class.forName(“java.util.LinkedList$Entry”);
Classc4=Class.forName(“I”);
Classc5=Class.forName(“.class”);
4)運(yùn)用primitivewrapperclasses的TYPE語法
Classc1=Boolean.TYPE;
Classc2=Byte.TYPE;
Classc3=Character.TYPE;
Classc4=Short.TYPE;
Classc5=Integer.TYPE;
Classc6=Long.TYPE;
Classc7=Float.TYPE;
Classc8=Double.TYPE;
Classc9=Void.TYPE。
以上就是有關(guān)java反射的所有介紹了,java反射是java學(xué)習(xí)過程當(dāng)中的一個(gè)基礎(chǔ)點(diǎn),因此學(xué)習(xí)java的朋友一定不要錯(cuò)過。如果你還想了解更多與之相關(guān)的信息,歡迎關(guān)注我們文軍營銷的官網(wǎng)。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請(qǐng)撥打電話 400 685 0732