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 国际」许可协议进行许可。

posted @   Roc-xb  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」

易微帮源码


易微帮官网

more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示