Java 反射学习(二)成员变量的反射
来源:互联网 发布:网络三剑客官方下载 编辑:程序博客网 时间:2024/05/16 20:31
定义ReflectPoint类
public class ReflectPoint{private int x;public int y;public ReflectPoint(int x, int y){super();this.x = x;this.y = y;}}
定义ReflectTest类
import java.lang.reflect.Field;import javax.activation.FileDataSource;public class ReflectTest{public static void main(String[] args) throws Exception{ReflectPoint pt1=new ReflectPoint(3, 5);//getField()只能得到可见的(此处y为共有)Field fieldY=pt1.getClass().getField("y");System.out.println(fieldY.get(pt1));//打印结果为:5//getDeclaredField()可以得到不可见的(此处x为私有),但须要将其setAccessible()方法设为trueField fieldX=pt1.getClass().getDeclaredField("x");fieldX.setAccessible(true);System.out.println(fieldX.get(pt1));//打印结果为:3}}
简单应用:将任意一个对象中的所有String类型的成员变量所对应的字符串内容中的"b"改为"a"。
更改ReflectPoint类为:
public class ReflectPoint{private int x;public int y;public String str1="bab";public String str2="bac";public String str3="cad";public ReflectPoint(int x, int y){super();this.x = x;this.y = y;}public String toString(){return str1+" "+str2+" "+str3;}}
更改ReflectTest类为:
import java.lang.reflect.Field;import javax.activation.FileDataSource;public class ReflectTest{public static void main(String[] args) throws Exception{ReflectPoint pt1=new ReflectPoint(3, 5);changeStringValue(pt1);System.out.println(pt1);}private static void changeStringValue(Object obj)throws Exception{Field[] fields=obj.getClass().getFields();for(Field field : fields){if(field.getType()==String.class){String oldValue=(String)field.get(obj);String newValue=oldValue.replace('b','a');field.set(obj,newValue);}}}}
运行结果为:
0 0
- Java 反射学习(二)成员变量的反射
- 理解反射(二)成员变量的反射
- java 成员变量的反射
- 黑马程序员——【Java反射学习】方法的反射/成员变量的反射/构造函数的反射
- Java 反射学习(三)成员方法的反射
- 成员变量的反射
- Java类成员变量的反射
- java反射---获取类的成员变量
- Java反射机制之成员变量的反射
- java基础--反射(成员变量)
- java反射类成员变量
- java反射类成员变量
- java反射类成员变量
- Java反射四 成员变量
- Java反射获取成员变量
- java 反射,访问成员变量
- 反射 --- 成员变量Field类的反射
- 类反射学习(三) JAVA如何利用类反射调用普通函数、访问成员成员变量
- 轻松搞定面试中的红黑树问题
- word2vec核心代码注释
- 破解网络投票IP限制
- linux 磁盘和文件系统
- Linux 软件配置
- Java 反射学习(二)成员变量的反射
- URAL 1517 后缀数据+最长公共前缀LCP
- 9-4 向量类
- EditText、requestFocus、imeOptions、TextWatcher、setOnEditorActionListener
- MFC控件添加变量时,control和value的区别
- 设置修改CentOS系统时区
- PMC为OCP提供业界最高密度机架级存储
- js数组长度获取问题?
- Qt QTreeWidget的行间距设置