反射
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)
反射弊端
反射機制的缺點是會大大降低程式的執行效率。
運作結果: