-1

我有一个类 Person 有 2 个字段:名称和年龄,我想像这样在类中声明这个类的实例。

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”,我想要一些通用的东西来自动生成文件 txt。所以我必须尝试检索类的对象

我尝试使用 Java 反射。它像字段一样识别 p1、p2、p3,但我无法访问该对象的值。任何想法?感谢您的关注!

4

1 回答 1

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
    }
}
帕特里克
伯纳德
我是

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

于 2012-12-04T00:14:18.053 回答