`
zhongzhihua
  • 浏览: 313783 次
  • 来自: ...
社区版块
存档分类
最新评论

java反射--如何改变private中的变量的值

    博客分类:
  • java
阅读更多

class DemoTest{

   private String name="123";

   public getName(){

       system.out.println("public getName " + name);

       return name;

   }

   private getName2(){

       system.out.println("private getName2 " + name);

      return name;

   }

}

 

如这个,要改变name的值。如何改变。通过java反射如何改变

 

先来看看如何用反射来调用getName方法

class<DemoTest> calzz=DemoTest.class;

Constructor cons=clazz.getConstructor(new class[]{});//这个是得到class对象的构造方法。参数为构造方法的参数的类的对象。

如:DemoTest有一个构造方法为public DemoTest(String arg0,String arg1){......}

这时,Constructor cons=clazz.getConstructor(new class[]{String.class,String.class});两个String.calss分别对应arg0,arg1.

接下来是:

DemoTest test=(DemoTest)cons.newInstance(new Object[]{});//生成相应的对象。参数new Object[]{} 就是构造方法对应的参数的具体值。如刚才的:

DemoTest test=(DemoTest)cons.newInstance(new Object[]{“李车”,"张三"});

接下来:

Method method=clazz.getMethod("getName",new Class[]{String.class});

method.invoke(test,new Object[]{"王五"});

这时就可以打印出王五了。

 

那要如何把name为private 的值进行改变呢。

1。先得到field,

Field field=clazz.getDeclaredField("name");

2.将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。

field.setAccessible(true);

3.对变量值进行修改

field.set("name","王五");

 

OK;

 

要访问私有的方法也是一样。

 

Method method=clazz.getDeclaredMethod("getName2");

method.setAccessible(true);

method.invoke(test,new Object[]{"王五"});

 

 

OK!

0
0
分享到:
评论
1 楼 dyfh 2015-01-09  
不知是否与jdk的版本有关,但在jdk1.6里,
3.对变量值进行修改
field.set("name","王五");
此处应为
field.set(clazz,"王五");

相关推荐

    基于python深度学习对船舶进行目标检测-含摄像头识别-含代码和数据集.zip

    本代码是基于python pytorch环境安装的。下载本代码后,有个环境安装的requirement.txt文本,环境需要自行配置。或可直接参考下面博文进行环境安装。 https://blog.csdn.net/no_work/article/details/144331388 安装好环境之后, 代码如需重新训练的话,需要依次运行 01、02、03py文件。 ,如果只是调用已经训练好的模型,去做识别的话,直接运行03pyqt.py即可 以下关于每个py文件的介绍: 输入指令python 01划分数据集.py 就会将我们的数据集转成yolo格式的txt,同时生成train.txt和val.txt,和配置文件data.yaml 运行02train.py即可开始训练模型。 最后运行03pyqt.py文件就有pyqt的可视化界面。 通过点击加载图片按钮,来选择我们要识别的图片,再点击检测按钮就可以完成识别了。 如果要使用摄像头检测功能直接点击摄像头按钮即可实时检测。

    基于小程序的家具购物小程序源代码(php+小程序+mysql+LW).zip

    个人中心:用户可以在这里管理自己的个人信息,如查看和更新个人资料、订单历史、收藏等。 用户管理:这个模块可能用于管理用户账户,包括注册、登录、权限分配等。 家具分类管理:用于管理家具的分类,比如客厅家具、卧室家具、厨房家具等,方便用户根据类别浏览商品。 家具新品管理:这个模块可能用于管理新上架的家具产品,包括新品的添加、展示和推广。 系统管理:涉及到小程序的后台管理,可能包括系统设置、数据维护、安全监控等功能。 订单管理:用户可以在这里查看和管理自己的订单,包括下单、支付、查看订单状态、售后服务等。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    【电力负荷预测】基于matlab沙猫群算法优化回声神经网络SCSO-ESN电力负荷预测(多输入单输出)【Matlab仿真 5350期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    基于微信的疫情期间学生请假与销假系统的设计与实现源代码(java+小程序+mysql+LW).zip

    基于微信的疫情期间学生请假与销假系统的设计与实现源代码(java+小程序+mysql+LW).zip

    【JCR一区级】基于matlab金豺算法GJO-CNN-BiLSTM-Attention故障诊断分类预测【Matlab仿真 5449期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    基于中医药知识图谱智能问答源码+文档+全部资料.zip

    【资源说明】 基于中医药知识图谱智能问答源码+文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    机器学习(视觉识别):真实人脸和AI生成的人脸图像数据集

    旨在为机器学习和深度学习应用提供高质量的真实人脸和AI生成的人脸图像。这个数据集对于开发和测试能够区分真实和AI生成面部图像的分类器至关重要,适用于深度伪造检测、图像真实性验证和面部图像分析等任务。 该数据集精心策划,支持前沿研究和应用,包含了从多种“灵感”源(如绘画、绘图、3D模型、文本到图像生成器等)生成的图像,并通过类似StyleGAN2潜在空间编码和微调的过程,将这些图像转化为照片级真实的面部图像。数据集还包含了面部标志点(扩展的110个标志点集)和面部解析语义分割图。提供了一个示例脚本(explore_dataset.py),展示了如何在数据集中访问标志点、分割图,以及如何使用CLIP图像/文本特征向量进行文本搜索,并进行一些探索性分析。 数据集的四个部分总共包含了约425,000张高质量和策划的合成面部图像,这些图像没有隐私问题或许可证问题。这个数据集在身份、种族、年龄、姿势、表情、光照条件、发型、发色等方面具有高度的多样性。它缺乏配饰(如帽子或耳机)以及各种珠宝的多样性,并且除了头发遮挡前额、耳朵和偶尔眼睛的自我遮挡外,不包含任何遮挡。

    java毕设项目之基于springboot框架开发的景区民宿预约系统的设计与实现(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:springboot,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3

    基于豆瓣图书的推荐、知识图谱与知识引擎简单构建neo4j源码+文档+全部资料.zip

    【资源说明】 基于豆瓣图书的推荐、知识图谱与知识引擎简单构建neo4j源码+文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    ROM数据库框架EFCore使用示例源码,vs2022运行通过

    ROM数据库框架EFCore使用示例源码,vs2022运行通过

    基于小程序的驾校预约管理系统源代码(java+小程序+mysql+LW).zip

    实现了首页、个人中心、学员管理、教练管理、驾校信息管理、驾校车辆管理、教练预约管理、考试信息管理、预约考试管理、系统管理等。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    如愿公益文件v7-2(3).zip

    如愿公益文件v7-2(3).zip

    基于小程序的书橱源代码(java+小程序+mysql+LW).zip

    (1)管理员功能分析 管理员可进行后台进行管理,包含个人中心、图书信息管理、图书类型管理、电子书论坛以及系统管理。 (2)用户功能分析 用户注册登录后主要功能模块包括首页、图书信息、电子书论坛以及我的(图书信息、阅读记录、我要发帖、我的发帖)。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    基于小程序的民大食堂用餐综合服务平台源代码(java+小程序+mysql+LW).zip

    本基于微信小程序的民大食堂用餐综合服务平台有管理员,商家,用户。管理员功能有个人中心,用户管理,商家管理,档口号管理,商家餐品管理,餐品种类管理,购物车管理,订单信息管理,签到信息管理,优惠活动管理,我的活动管理,系统管理等。商家功能有个人中心,商家餐品管理,餐品种类管理,购物车管理,订单信息管理,签到信息管理,优惠活动管理,我的活动管理等。用户可以订餐。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    java毕设项目之基于springboot的的学生干部管理系统(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:springboot,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3

    Python经典题库及答案(67页)

    Python经典题库及答案(67页)

    基于小程序的图书馆自习室座位预约管理微信小程序源代码(java+小程序+mysql+LW).zip

    管理员权限主要实现了管理员服务端;首页、个人中心、学生管理、座位信息管理、自习室分类管理、座位预约管理、学院分类管理、专业分类管理、留言板管理、系统管理,学生微信端;首页、座位信息、座位预约、我的等功能,基本上实现了整个图书馆自习室座位预约小程序信息管理的过程。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

    java毕设项目之基于SpringBoot的房屋交易平台的设计与实现(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:springboot,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3

    文件网络安全学习视频我爱i

    文件网络安全学习视频我爱i

    基于小程序的酒店管理系统源代码(java+小程序+mysql+LW).zip

    本基于微信小程序开发的酒店管理系统管理员,酒店管理员以及用户。管理员功能可以管理个人中心,用户信息管理,酒店管理员管理,房间类型管理,房间信息管理,订单信息管理,系统管理等。用户可以预定酒店。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具

Global site tag (gtag.js) - Google Analytics