Java通过反射机制修改类中的私有属性的值
定义一个含有私有属性的类
public class PrivateField {
private String username = "鹏程万里";
}
实例测试方法
// 创建一个类的对象
PrivateField privateField = new PrivateField();
// 获取对象的Class
Class<?> clazz = privateField.getClass();
// 获取指定名字的私有域
Field field = clazz.getDeclaredField("username");
// 设置压制访问类型检查,只有这样,才能获取和设置某个具体类的Field对应的值。
// 参数为 true时 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
// 如果为true是,能够正常运行,如果为false则会抛出异常信息:java.lang.IllegalAccessException
field.setAccessible(true);
System.out.println(field.get(privateField));
// 设置私有域的值
field.set(privateField, "2019");
// 输出被改变的属性值
System.out.println(field.get(privateField));
}
输出结果
鹏程万里
2019
作者:YangRoc
出处:https://www.cnblogs.com/YangRoc/p/17186678.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
标签:
反射
如果本篇文章有帮助到你,你可以请作者喝杯咖啡表示鼓励 ☕️
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」