进行了如下的实验
import java.lang.reflect.Field; public class 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; } public static void main(String[] args) { User user1 = new User(); try { Field field = User.class.getDeclaredField("name"); //setAccessible这行代码把对象上的name字段设置为可访问 System.out.println("Modifier before modify:"+field + " " +field.getModifiers()); field.setAccessible(true); System.out.println("Modifier after modify:"+field + " " +field.getModifiers()); // 设置该user1的name属性 field.set(user1, "zhangsan"); System.out.println(user1.getName()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
输出结果为
Modifier before modify:private java.lang.String com.huawei.ebus.field.test.test1.User.name 2
Modifier after modify:private java.lang.String com.huawei.ebus.field.test.test1.User.name 2
zhangsan
Process finished with exit code 0