反射 --- 成员变量Field类的反射

本文详细介绍了Java反射机制的概念、使用方法及其在实际编程中的应用案例,包括获取类的成员变量、设置私有成员变量值以及动态修改对象属性等操作。通过实例演示了如何利用反射实现字符串中字符替换的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Field类代表某个类中的所有成员变量的集合
实例1:
public class ReflectPoint {
private int x;//私有成员变量
public int y; //公有成员变量

public ReflectPoint(int x, int y) {
super();
this.x = x;
this.y = y;
}
}

ReflectPoint pt1 = new ReflectPoint(3, 5); //创建两个实例对象
ReflectPoint pt2 = new ReflectPoint(4, 6);

Field fieldY = ReflectPoint.class.getField("y"); //Field类对象fieldY -----> ReflectPoint 中的 y 成员变量
System.out.println(fieldY.get(pt1)); //输出fieldY.get(pt1)的值,5
System.out.println(fieldY.get(pt2)); //输出fieldY.get(pt2)的值,6

Field fieldX = ReflectPoint.class.getDeclaredField("x");//Field类对象fieldX -----> ReflectPoint 中的x 成员变量,此变量是私有成员,所以用getDeclaredField("x")方法
fieldX.setAccessible(true); //将fieldX变为可见,因为私有成员变量 x 不可见
System.out.println(fieldX.get(pt1)); //输出fieldX.get(pt1)的值,3
System.out.println(fieldX.get(pt2));           //输出fieldX.get(pt2)的值,4

实例2:
public class ReflectPoint {
public String str1 = "ball";
public String str2 = "basketball";
public String str3 = "back";
@Override
public String toString() {
return "ReflectPoint [str1=" + str1 + ", str2=" + str2 + ", str3="
+ str3 + "]";
}
}

private static void changeStringValue(Object obj) throws Exception {//将对象字符串中的'b'字母改为'a'
// TODO Auto-generated method stub
Field [] fields = ReflectPoint.class.getFields();//Field数组
for(Field field:fields){//增强型的for循环
if(field.getType() == String.class){//此处用 == 不用equals(),因为String类型的字节码只有一个
String oldString = (String)field.get(obj);
String newString = oldString.replace('b', 'a');
field.set(obj, newString);//将对象中的String类型成员变量的值变为新的值
}
}

ReflectPoint pt1 = new ReflectPoint(3, 5);
changeStringValue(pt1);
System.out.println(pt1);//输出ReflectPoint [str1=aall, str2=aasketaall, str3=aack]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值