-1

名前と年齢の 2 つのフィールドを持つクラス Person があり、このクラス内でこのクラスのインスタンスを次のように宣言したいと考えています。

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のようなファイルに保存することです...ファイルには「パトリック-24、バーナード-20、ラム-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 に答える