2016-05-24 2 views
0

У меня возникли проблемы с отображением элементов, которые я добавил в список, используя класс утилиты Arrays. Значения хранят объекты из класса людей, показанных нижеПолучение только последнего элемента из списка Независимо от индекса

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

Понял, что проблема связана с модификатором статического доступа в переменных экземпляра в класс компонента, возраст и имя, когда статический объект удален, метод работает отлично. Спасибо за ссылку.

+0

Так что именно проблема у вас возникли? – jeffdill2

ответ

1

Чтобы иметь последний пункт вашего списка, вы можете сделать это:

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

У вас есть переменные-члены установить как статические, они должны быть на уровень экземпляра:

private Integer age; 
private String name; 

В противном случае каждое дополнение к списку перезаписывает общее состояние People объекта.

Я подозреваю, что, поскольку переменные передаются в конструктор, который вы хотите использовать, final не static.

Смежные вопросы