Java 反射的定義:
一、 要想使用反射,首先需要獲得待處理的類或對象所對應的Class對象。
獲取Class對象主要有三種方法:
//獲取Class對象方法一: 使用Class類的靜態方法
Class<?> classType1 = Class.forName("java.lang.String");
//獲取Class對象方法二: 使用類的.class 語法
Class<?> classType2 = String.class;
//獲取Class對象方法二: 使用對象的getClass()方法(因爲使用的是對象的getClass()方法,所以要先生成對象)
String str = "reflection";
Class<?> classType3 = str.getClass();
二、獲取Class對象後就可以生成類的對象了,也有二種方法:
//生成對應Class的對象(適合構造方法爲空)
Object obj1 = classType1.newInstance();
//生成對應Class的對象 的第二種方法(適合任何方式的構造方法,空構造方法時只要傳一個空數組)
Constructor<?> cons = classType1.getConstructor(new Class[]{});
Object obj2 = cons.newInstance(new Object[]{});
三、獲取Class對象所有的屬性和方法
//獲取所有的屬性
Field[] field = classType3.getDeclaredFields();
//獲取所有的方法
Method[] methods = classType3.getMethods();