2016-05-24 23 views
0

配列ユーティリティクラスを使用してリストに追加した要素を表示する際に問題が発生しています。値ストアは、値は以下のコードによってリストに追加されるリストから最後の要素のみを取得する

public class People { 

private static Integer age; 
private static String name; 

public People(String name,Integer age){ 

    this.age = age; 
    this.name = name; 
} 

public Integer getAge(){ 
    return this.age; 
} 
public String getName(){ 
    return this.name; 
} 
@Override 
public String toString(){ 
    return "name"+this.getName()+" Age"+ this.getAge(); 
} 

}

、以下に示すクラスの人々からオブジェクトである:

List<People> myPeople = Arrays.asList(

     new People("Samuel Owino", 18), 
     new People("Swale Mdohe", 12), 
     new People("Joseph Wambwile", 48), 
     new People("Samuel Werre", 18), 
     new People("Swale Mdohe", 12), 
     new People("Joseph Wambwile", 48) 
); 

表示コードは次の通りである:

myPeople.forEach(System.out::println); 

問題が、静的なアクセス修飾子をインスタンス変数に使用していることを認識しました。 Beanクラス、年齢、名前、静的メソッドが削除された場合、メソッドは完全に機能します。参照していただきありがとうございます。

+0

だから、正確にあなたが抱えている問題は何ですか? – jeffdill2

答えて

1

、あなたがこれを行うことができます:

System.out.println(myPeople.get(myPeople.size() - 1)); 
1

あなたは、静的に設定さメンバ変数を持って、彼らは、インスタンス・レベルでなければなりません:

private Integer age; 
private String name; 

そうでない場合は、リストの各添加はPeopleオブジェクトの共有状態を上書きします。

私は変数は、あなたがfinalないstaticを使用することを意味し、コンストラクタに渡されると思われます。あなたのリストの最後の項目を持っている

関連する問題