利用反射技术修改类中的字段(成员变量的反射)
来源:互联网 发布:承接淘宝服装代加工 编辑:程序博客网 时间:2024/05/29 05:04
题目:利用反射技术修改类中的字段及成员变量的反射
作者: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 aasketaallyangwenxue
0 0
- 利用反射技术修改类中的字段(成员变量的反射)
- 利用反射将字段为String类型的成员变量中的字符串中的i改为Q
- Java反射-使用反射修改一个类中的所有String类型的成员变量的值
- 反射 --- 成员变量Field类的反射
- 反射:成员变量(字段)
- java反射修改类的私有成员变量
- 成员变量的反射
- 通过反射改变类中的成员变量
- 利用反射对修饰符为final的成员变量进行修改
- Java类成员变量的反射
- java反射---获取类的成员变量
- 反射操作类的成员变量
- 利用反射访问类的私有成员
- 利用反射对类字段的解析
- java 成员变量的反射
- Java利用反射机制遍历成员变量
- Java利用反射操作成员变量,方法
- 通过反射修改类的某些字段
- ZOJ 3870 - Team Formation(数学)
- Qt 实现的文本编辑器
- MySql的基本语句操作
- DP·数位DP(2)
- 二分查找
- 利用反射技术修改类中的字段(成员变量的反射)
- Linux常用命令大全
- hihoCoder 1038 : 01背包
- 数据挖掘数据集下载搜集整理版
- day 024UITableView
- 深入了解 CSS3 新特性
- B_Dungeon Master(POJ_2251)
- Jsp与Servlet中乱码的解决方法
- hihoCoder 1043 : 完全背包