题目:对于下方的类,如何改变类实例的name属性值
package com.test.refect;
public class Private {
private String name = "chunge";
public String getName(){
return name;
}
}
解法:利用java反射机制,通过设置setAccessible(true)设置压制JAVA访问控制检查
实现代码如下
public class Main {
public static void main(String[] args) throws Exception{
Private p = new Private();//创建类实例
Class<?> clazz = p.getClass();//获得实例对应Class类
Field field = clazz.getDeclaredField("name");//利用getDeclareField方法获取类的私有name属性
field.setAccessible(true);//压制JAVA访问控制检查
field.set(p,"lisi");//修改实例的名字
System.out.println(p.getName());
}
}
本文介绍如何使用Java反射机制来修改类实例中私有的name属性值。通过创建类实例,获取实例对应的Class对象,利用getDeclaredField方法获取私有字段,并通过setAccessible(true)绕过访问控制限制,最后调用set方法来改变私有属性的值。
1149

被折叠的 条评论
为什么被折叠?



