我有一个包含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,但我无法访问该对象的值。 任何的想法? 谢谢你的关注!
答案 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
存储在数组中,然后遍历数组。