java 通过反射读取和设置类指定属性的值
使用反射可以读取和设置指定属性的值。下面是一个Java示例代码,演示了如何使用反射读取和设置指定属性的值:
import java.lang.reflect.Field;
public class Main{
public static void main(String[] args) {
ReflectExample example = new ReflectExample();
example.setName("John");
example.setAge(25);
// 读取属性值
String name = (String) getFieldValue(example, "name");
int age = (int) getFieldValue(example, "age");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
// 设置属性值
setFieldValue(example, "name", "Tom");
setFieldValue(example, "age", 30);
System.out.println("New Name: " + example.getName());
System.out.println("New Age: " + example.getAge());
}
// 通过反射获取属性值
public static Object getFieldValue(Object object, String fieldName) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
return field.get(object);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
// 通过反射设置属性值
public static void setFieldValue(Object object, String fieldName, Object value) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, value);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
class ReflectExample {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
通过getFieldValue
方法可以读取指定对象的属性值,通过setFieldValue
方法可以设置指定对象的属性值。需要注意的是,使用反射操作私有属性时,需要先调用field.setAccessible(true)
来允许访问私有属性。
运行上述示例代码,你将会得到输出结果:
Name: John
Age: 25
New Name: Tom
New Age: 30
这表明我们成功地通过反射读取和设置了指定属性的值。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明