如何利用反射机制 读取私有属性的值?

kemo422 2007-08-27 03:10:51
public String getFiledName(Object arg0) throws IllegalArgumentException,
IllegalAccessException {

Class cls = arg0.getClass();
Field[] fields = cls.getDeclaredFields();
String[] name = new String[fields.length];
Object[] value = new Object[fields.length];

Field.setAccessible(fields, true);

for (int i = 0; i < name.length; i++) {
name[i] = fields[i].getName();
System.out.println(name[i] + "->");
fields[i].get(???????)???????????????????参数是什么!!!!!如何取出值???
System.out.println(value[i]);

}

return null;
}
...全文
406 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kemo422 2007-08-27
  • 打赏
  • 举报
回复
2楼的朋友 我开始像你那么写的 虽然不会有异常 但还是没有值
我换了方法了 用method取出来了

谢谢你了~
zuguanqun 2007-08-27
  • 打赏
  • 举报
回复
public class TestReflect {


public static void main(String[] args){
APerson a=new APerson();
Field fields[] = a.getClass().getDeclaredFields();
String[] name = new String[fields.length];
Object[] value = new Object[fields.length];

try{
Field.setAccessible(fields, true);
for (int i = 0; i < name.length; i++) {
name[i] = fields[i].getName();
System.out.println(name[i] + "->");
value[i] = fields[i].get(a);
System.out.println(value[i]);

}
}
catch(Exception e){
e.printStackTrace();
}
}
}

class APerson{
private String name;
private String sex;
private int age;

APerson(){
name="John";
sex="男";
age=45;
}

public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
  • 打赏
  • 举报
回复
其中放的是对象的变量,本例中你还没有生成类的对象。你需要 newInstance() 生成一个对象。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧