如何从类中获取对象?

时间:2012-12-03 23:55:16

标签: java object reflection

我有一个包含2个字段的Person:Name和Age,我想在类中声明这个类的实例。

public class Person implements ToCSV {

private String name;
private int age;

public Person(String name, int age) {
    this.name = name;
    this.age = age;
}

public Person(){

}
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;
}


Person p1 = new Person("Patrick", 24);
Person p2 = new Person("Bernard", 20);
Person p3 = new Person("Lam", 23);

}

我的问题是:我可以通过一般方式获取对象p1,p2,p3的所有值吗?

我的目标是将所有对象的数据保存到像txt这样的文件中...该文件将具有如下内容:“Patrick - 24,Bernard - 20,Lam - 23”我想要一些如此通用的自动生成文件文本。所以我必须尝试检索类

的对象

我尝试使用Java Reflection。它像Fields一样识别p1,p2,p3,但我无法访问该对象的值。 任何的想法? 谢谢你的关注!

1 个答案:

答案 0 :(得分:1)

有趣的是,您发布的代码将产生StackOverflowError - 对第一个构造函数的每个构造函数调用将尝试生成 3个 Person个实例。您的意思是制作Person字段static吗?

如果你这样做,你可以这样做:

for (Field f : Person.class.getDeclaredFields()) {
    try {   
        System.out.println(((Person)f.get(null)).getName());
    } catch (IllegalAccessException e) {
        // do something
    }
}
Patrick
Bernard
Lam

如果可能的话,我通常会试图说服人们寻找除反思以外的方法。在您的情况下,您可以将p1 .. p3存储在数组中,然后遍历数组。