共計(jì) 1017 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
通過(guò) Java 反射可以獲取對(duì)象的屬性值,可以使用以下步驟:
- 獲取對(duì)象的 Class 對(duì)象:使用
getClass()
方法獲取對(duì)象的 Class 對(duì)象,例如:
Class<?> cls = obj.getClass();
- 獲取對(duì)象的屬性:使用
getDeclaredField()
方法獲取指定名稱(chēng)的屬性對(duì)象,例如:
Field field = cls.getDeclaredField("fieldName");
其中,"fieldName" 為需要獲取的屬性名稱(chēng)。
- 設(shè)置屬性的訪問(wèn)權(quán)限:如果屬性是私有的,需要設(shè)置屬性的訪問(wèn)權(quán)限為可訪問(wèn),使用
setAccessible(true)
方法設(shè)置屬性的可訪問(wèn)性,例如:
field.setAccessible(true);
- 獲取屬性的值:使用
get()
方法獲取屬性值,例如:
Object value = field.get(obj);
其中,obj
為對(duì)象實(shí)例。
完整示例代碼如下:
import java.lang.reflect.Field;
public class Main {public static void main(String[] args) throws Exception {// 創(chuàng)建對(duì)象實(shí)例
User user = new User("Alice", 18);
// 獲取對(duì)象的 Class 對(duì)象
Class<?> cls = user.getClass();
// 獲取屬性對(duì)象
Field nameField = cls.getDeclaredField("name");
Field ageField = cls.getDeclaredField("age");
// 設(shè)置屬性的訪問(wèn)權(quán)限
nameField.setAccessible(true);
ageField.setAccessible(true);
// 獲取屬性值
Object nameValue = nameField.get(user);
Object ageValue = ageField.get(user);
System.out.println("name: " + nameValue);
System.out.println("age: " + ageValue);
}
}
class User {private String name;
private int age;
public User(String name, int age) {this.name = name;
this.age = age;
}
}
這樣就可以通過(guò) Java 反射獲取對(duì)象的屬性值了。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完