利用反射技术修改类中的字段(成员变量的反射)
2015-04-28 22:27
387 查看
题目:利用反射技术修改类中的字段及成员变量的反射
作者:Vashon
一、首先定义一个类如下:
二、对以上的操作实现如下:
控制台输出为:
fieldY=5
fieldX=3
替换后为:
aall aasketaall
yangwenxue
作者: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
相关文章推荐
- 利用反射技术修改类中的字段(成员变量的反射)
- 利用反射将字段为String类型的成员变量中的字符串中的i改为Q
- 利用反射对修饰符为final的成员变量进行修改
- 类反射学习(三) JAVA如何利用类反射调用普通函数、访问成员成员变量
- C# 利用反射访问修改私有成员
- 将任意一个对象中的所有String类型 的成员变量所对应字符串中的“b”改成“a”(利用反射)
- (二)利用反射机制实例化类,获取和修改变量,获取和调用方法和构造方法
- 【原创】.NET中利用反射访问和修改类中的私有成员
- 利用反射机制操作私有成员变量(private修饰的变量)
- 反射获取成员变量,并修改值
- 第一篇:利用反射技术给私有字段赋值
- java 反射技术 打印类成员变量的值(查看一个对象的成员数据时十分方便)
- java利用反射来调用一个类的私有方法和成员变量
- 利用反射在类外修改private成员
- Java利用反射机制遍历成员变量
- 【转】【Java】利用反射技术,实现对类的私有方法、变量访问
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- java 反射修改私有成员变量
- Java学习笔记_反射_Class.forName()加载并修改一个类的私有成员变量
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据