天天看點

反射機制

反射

JAVA反射機制是在運作狀态中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意方法和屬性;這種動态擷取資訊以及動态調用對象方法的功能稱為java語言的反射機制。

在開發的過程中,有時會遇到某個類的某個成員變量、方法或是屬性是私有的。這時候就可以利用Java的反射機制通過反射來擷取所需的私有成員或是方法。

反射常用類

我們對Java反射機制的學習,設計上基本就等同于對Class類的用法的學習。是以,要了解相關的類及其用法。

Class類是java反射機制的核心,我們可以提供Class類動态的加載某個類。

Class c =Class.forName("Reflect.ReflectClass");

Class類擷取對象的方式有3種。

運用getClass();

.運用class文法;

運用Class.forName()文法(常用)

Constructor類的對象代表"構造器",Constructor類對象我們要通過Class類對象調用方法來擷取。

源碼:public Constructor getConstructor(Class<?>... parameterTypes)

Field類的對象代表”屬性“,Field類對象的擷取要通過Class類對象調用方法來擷取。

源碼: public Field getDeclaredField(String name)

Method類的對象代表”方法“,Method類對象的擷取要通過Class類對象調用方法來擷取。

通過指定的方法名和參數擷取到Method類方法對象

源碼: public Method getDeclaredMethod(String name, Class<?>... parameterTypes)

反射弊端

反射機制的缺點是會大大降低程式的執行效率。

運作結果:

反射機制

繼續閱讀