首先先創建一個User
private String name;
private Integer age;
private Double height;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Double getHeight() {
return height;
}
public void setHeight(Double height) {
this.height = height;
}
假設現在獲取name這個屬性,並同時給這個User取名爲張三
public static void main(String[] args) {
User user1 = new User();
try {
Field field = User.class.getDeclaredField("name");
//setAccessible這行代碼把對象上的name字段設置爲public訪問屬性.
field.setAccessible(true);
// 設置該user1的name屬性
field.set(user1, "zhangsan");
System.out.println(user.getName());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在這裏能看見
field.setAccessible(true);
這行代碼,setAccessible的作用是將Field對象上的指定字段訪問值設置爲public,
可以看上面User類,該類下的所有屬性都是private的訪問權限,如果將setAccessible註釋掉,系統將給出
IllegalAccessException: Class test_field.TestField can not access a member of class test_field.User with modifiers "private"