哈嘍,大家好,我是木頭左!
相信很多小夥伴在學習Java的過程中,都曾經遇到過需要動態地獲取類的屬性和方法的場景。而Java反射正是解決這個問題的利器。那麼,如何使用Java反射來獲取類的屬性及父類的屬性呢?
一、Java反射簡介
要了解一下Java反射是什麼。簡單來說,Java反射就是執行時能夠獲取類的資訊,並且可以操作類或物件的一種機制。透過Java反射,可以在執行時獲取類的構造方法、成員變數、成員方法等資訊,甚至可以建立物件、呼叫方法等。
二、Java反射獲取類的屬性
接下來,重點講解一下如何使用Java反射獲取類的屬性。需要獲取到類的Class物件,然後透過這個Class物件就可以獲取到類的所有屬性了。這裡以一個示例來說明:
假設有一個Person類,如下所示:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
可以使用以下程式碼來獲取Person類的屬性:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws IllegalAccessException {
Person person = new Person("張三", 25);
Class<?> clazz = person.getClass(); // 獲取Person類的Class物件
Field[] fields = clazz.getDeclaredFields(); // 獲取Person類的所有屬性(包括父類的屬性)
for (Field field : fields) {
System.out.println("屬性名:" + field.getName());
System.out.println("屬性型別:" + field.getType());
}
}
}
執行上述程式碼,可以得到如下輸出:
屬性名:name
屬性型別:class java.lang.String
屬性名:age
屬性型別:int
可以看到,成功地獲取到了Person類的屬性以及父類的屬性。
我是木頭左,感謝各位童鞋的點贊、收藏,我們下期更精彩!