-
獲取成員變量們:
Field | getField(String name)
返回一個 |
獲取指定的Class類對象中的成員變量 【public修飾】 |
Field[] | getFields()
返回包含一個數組 |
獲取所有Class類對象中public修飾的所有成員變量【public修飾】 |
Field | getDeclaredField(String name)
返回一個 |
獲取指定的Class類對象中的成員變量 【不考慮修飾符,但要做暴力反射處理】 |
Field[] | getDeclaredFields()
返回的數組 |
獲取指定的Class類對象中的所有成員變量 【不考慮修飾符,但要做暴力反射處理】 |
獲取指定public修飾的成員變量
public static void main(String[] args) throws Exception {
// 獲取Class類對象
Class classPerson = Person.class;
// 通過Class類對象 獲取成員變量
Field field = classPerson.getField("address");
// 實例化Person對象
Person person = new Person();
// 設置值
field.set(person,"中國");
String value = (String) field.get(person);
System.out.println(value);
}
getFields()方法:
獲取public修飾的Class對象的成員變量們。【其中Field.get()方法:獲取值,同樣也有Field.set()方法】
public class Test {
public static void main(String[] args) throws Exception {
// 獲取Class類對象
Class classPerson = Person.class;
// 通過Class類對象 獲取成員變量
Field[] fields = classPerson.getFields();
// 實例化一個Person對象
Person person = new Person();
// 遍歷Class對象的成員變量
for (Field field : fields){
System.out.println(field);
// 獲取Class類對象的成員變量的值
String value = (String) field.get(person);
System.out.println(value);
}
}
}
以下這兩個方法可以獲取所有Class類對象的成員變量
【不考慮修飾符,包括私有成員變量,但是要忽略訪問修飾符的安全監測,即暴力反射處理】
// 暴力反射
field.setAccessible(true);
getDeclaredField(String name)方法:
getDeclaredFields()方法:
-
獲取構造方法們:
Constructor<T> | getConstructor(類<?>... parameterTypes)
返回一個 |
Constructor<?>[] | getConstructors()
返回包含一個數組 |
Constructor<T> | getDeclaredConstructor(類<?>... parameterTypes)
返回一個 |
Constructor<?>[] | getDeclaredConstructors()
返回一個反映 |
getConstructor(類<?>... parameterTypes)方法;
【注:該方法的參數爲構造方法對應的參數】
獲取Class類對象的構造方法;【注意:獲取的這個構造方法是一個對象】
public static void main(String[] args) throws Exception {
// 獲取Class類對象
Class personClass = Person.class;
// 獲取Class對象的構造方法
Constructor constructor = personClass.getConstructor(int.class,String.class);
// 同過constructor實例化一個person對象
Person person = (Person) constructor.newInstance(11,"張三");
// 輸出person內容
System.out.println(person.getId()+","+person.getName());
}
【注:其他方法類似的都與上面介紹一致,自行理解一下】
-
獲取成員方法們:
Method | getMethod(String name, 類<?>... parameterTypes)
返回一個 |
Method[] | getMethods()
返回包含一個數組 |
Method | getDeclaredMethod(String name, 類<?>... parameterTypes)
返回一個 |
Method[] | getDeclaredMethods()
返回包含一個數組 |
獲取Class類對象的成員方法 【注:成員方法爲一個對象】
無參方法代碼示例:
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) throws Exception {
// 獲取Class類對象
Class personClass = Person.class;
// 實例化一個Person對象
Person person = new Person();
// 獲取Class對象的成員方法對象
Method method = personClass.getMethod("Eat");
// 執行方法
method.invoke(person);
}
}
有參方法代碼示例:
public class Test {
public static void main(String[] args) throws Exception {
// 獲取Class類對象
Class personClass = Person.class;
// 實例化一個Person對象
Person person = new Person();
// 獲取Class對象的成員方法對象
Method method = personClass.getMethod("Eat",String.class);
// 執行方法
method.invoke(person,"宮爆雞丁");
}
}
-
獲取類名:
String | getName()
返回由 |