在 Java 中,可以使用反射來根據屬性名獲取屬性值。下面是一個示例代碼:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) {
// 創建一個對象
Person person = new Person("張三", 20);
// 獲取屬性值
String name = getPropertyValue(person, "name");
int age = getPropertyValue(person, "age");
// 打印屬性值
System.out.println("name: " + name);
System.out.println("age: " + age);
}
private static <T> T getPropertyValue(Object obj, String propertyName) {
try {
// 獲取屬性
Field field = obj.getClass().getDeclaredField(propertyName);
// 設置可訪問性,避免 private 屬性訪問權限限制
field.setAccessible(true);
// 獲取屬性值
T value = (T) field.get(obj);
// 返回屬性值
return value;
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
// 如果發生異常,則返回 null
return null;
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
輸出結果:
name: 張三
age: 20
在上述示例中,使用了泛型方法 getPropertyValue()
,該方法通過反射獲取到指定對象的屬性,并返回屬性值。在獲取屬性之前,需要通過 setAccessible(true)
方法設置屬性的可訪問性,以便可以訪問到 private 屬性。