Java使用反射通过对象属性获取属性的值
// 通过属性获取传入对象的指定属性的值
public String getValueByPropName(Student student,String propName) {
String value = null;
try {
// 通过属性获取对象的属性
//.getDeclaredFields() 获得某个类的所有声明的字段,即包括public、private和proteced但不包括父类申明字段
//.getClass() 是⼀个对象实例的⽅法,只有对象实例才有这个⽅法,具体的类是没有的
Field field = student.getClass().getDeclaredField(propName);
// 对象的属性的访问权限设置为可访问
//允许获取实体类private的参数信息
field.setAccessible(true);
// 获取属性的对应的值
value = field.get(student).toString();
} catch (Exception e) {
return null;
}
return value;
}
//主程序
public class TestReflectSet {
private String readOnly;
public String getReadOnly() {
return readOnly;
}
public void setReadOnly( String readOnly ) {
System.out.println("set");
this.readOnly = readOnly;
}
}
//方法1:
TestReflectSet t = new TestReflectSet();
//得到一个类的Field 属性,
Field f = t.getClass().getDeclaredField("readOnly");
//然后设置可见性,然后设置了一个值,最后打印
f.setAccessible(true);
f.set(t, "test");
System.out.println(t.getReadOnly());
//方法2:
//通过调用属性的set方法来完成赋值。
Method setReadOnly = t.getClass().getMethod("setReadOnly", String.class);
String s ="test2";
setReadOnly.invoke(t,s);
System.out.println(t.getReadOnly());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)