题目:利用反射技术修改类中的字段及成员变量的反射

作者:Vashon

一、首先定义一个类如下:

class ReflectPoint {private int x; //私有的public int y;  //公用的public String str1="ball";public String str2="basketball";public String str3="yangwenxue";public ReflectPoint(){}public ReflectPoint(int x,int y){this.x=x;this.y=y;}public String toString(){return "替换后为:\n"+str1+"\t"+str2+"\t"+str3;}
}

二、对以上的操作实现如下:

package com.ywx.gaoxin;import java.lang.reflect.Field;/*** 1.成员变量的反射* 2.利用反射技术修改某个类中属性的值(类中的权限修饰符必须是public才可以)* 修改:将所有String类型的字段中的字符"b"修改为"a"* @author yangwenxue**/
public class ReflectTest {public static void main(String args[]) throws Exception{ReflectPoint re=new ReflectPoint(3,5);Field fieldY= re.getClass().getField("y");System.out.println("fieldY="+fieldY.get(re));//因为ReflectPoint类中的x是私有的Field fieldX= re.getClass().getDeclaredField("x");fieldX.setAccessible(true);//设为可以访问System.out.println("fieldX="+fieldX.get(re));//修改String类型的字段try {changeStringvalue(re);} catch (Exception e) {e.printStackTrace();}System.out.println(re);}/*** 将为String类型的字段中含有"b"的替换为"a"* @param obj* @throws Exception*/private static void changeStringvalue(Object obj) throws Exception{Field[] fields= obj.getClass().getFields();for(Field field : fields){if(field.getType().equals(String.class)){//判断字段是否为String类型String oldValue=(String) field.get(obj);String newValue=oldValue.replace('b', 'a');field.set(obj, newValue);}}}
}

控制台输出为:

fieldY=5
fieldX=3
替换后为:
aall aasketaall yangwenxue

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/ywx-vashon/p/4895761.html

利用反射技术修改类中的字段(成员变量的反射)相关推荐

  1. C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

    <p style="line-height: 19px; margin: 10px auto; color: rgb(75, 75, 75); font-family: Verdana ...

  2. Java通过反射机制修改类中的私有属性的值

    定义一个含有私有属性的类 public class PrivateField {private String username = "鹏程万里";} 实例测试方法 // 创建一个类 ...

  3. c#中反射技术在Unity中的运用

    反射技术给类赋值的好处就是可以简化代码,封装的好处就显而易见了.最直接的用途就是用在在显示配置文件的时候,个人习惯性做法是做一个VO来存储需要的数据,其代码如下: internal class Bas ...

  4. 如何在类的外部修改类中的私有数据成员

    一般的情况是类中的私有数据成员,只能是类的对象自己可以修改,从外部是不能更改的如下例子 #include<iostream> using namespace std;class Data ...

  5. C++ 类中的static成员的使用及单例设计示例

    文章目录 static 静态成员变量 static静态成员函数 单例设计模式 单例实现图片资源的封装(很实用) 静态成员:被static修饰的成员变量\函数 可以通过对象(对象.静态成员).对象指针( ...

  6. java 反射 成员变量_Java 反射:成员变量

    获取成员变量 借助Class类某些可以获取对应类中声明的成员变量实例对象,这些方法有: ⑴Field[] getFields():返回一个该Class对象表示类或接口中所有public属性(含继承的) ...

  7. java 反射技术实例,什么是反射技术?Java中最常用的反射技术实例

    什么是反射技术? 动态获取指定类以及类中的内容(成员),并运行其内容.应用程序已经运行,无法在其中进行new对象的建立,就无法使用对象.这时可以根据配置文件的类全名去找对应的字节码文件,并加载进内存, ...

  8. Java反射之Filed(类中的属性对象)

    通过反射机制获取类中的属性对象. 1.获取类中所有的public属性(包括父类):getFields(): public class TestFiled {class A{public int age ...

  9. 【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )

    文章目录 一.检查订阅方法缓存 二.反射获取订阅类中的订阅方法 三.完整代码示例 一.检查订阅方法缓存 注册订阅者时 , 只传入一个订阅者类对象 , 其它信息都需要通过反射获取 ; 1. 获取订阅者类 ...

最新文章

  1. oracle 27504,ora-27504 ora-27300 ora-27301 ora-27302
  2. Apache Flink 零基础入门(九)Flink支持哪些数据类型
  3. jQuery之过滤选择器
  4. Nginx自动安装脚本
  5. jmeter模拟http请求/发送gzip数据
  6. j计算机专业英语题库,计算机专业英语单词习题
  7. LeetCode简单题(一)
  8. SAP License:SAP中的文本管理
  9. 根据秒数返回(天,小时,分钟,秒)
  10. 鸿蒙系统pc版测评,华为MatePad Pro测评:鸿蒙系统+麒麟9000,旗舰平板封神之作?...
  11. oracle查询锁表SQL
  12. 使用基于迭代的敏捷创建里程碑
  13. anti-wrinkle_Anti-wrinkle是什么意思
  14. 关于安装不上tesseract和opencv以及稀里糊涂的解决方案
  15. java半角转全角_JAVA 半角全角相互转换
  16. zbrush软件介绍
  17. EditText的属性!
  18. 图像灰度、亮度、强度区分
  19. rsi指标如何计算怎样分析RSI指标
  20. CentOS6开关机日志查询

热门文章

  1. web之用FileUpload上传文件
  2. 0040 Java学习笔记-多线程-线程run()方法中的异常
  3. SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)
  4. srm#397_div1_500pt 矩阵乘法+快速模幂
  5. 解决修改SQL SERVER 默认1433端口 访问出错的问题;
  6. vue-router 在项目中的使用
  7. 系统启动与内核管理 ;AWK部分 重要内容 (实验及awk的常见面试题)
  8. url中携带中文乱码问题
  9. 利用Zabbix ODBC monitoring监控MySQL
  10. 在工作迷惘的寒冬感受亲情的温暖。