2013-07-30 2 views
-2

Как я могу получить второй объект из классаList типа (класса) Person и применить метод к этому конкретному объекту?Обновление объекта внутри ArrayList

ArrayList<Person> person = new ArrayList<Person>(); 

Для примера. У меня есть метод в классе Person, называемый hasBirthday(), который добавляет один год к объекту, но он применяется только ко второму Созданному объекту. Это, чтобы отобразить сообщение с днем ​​рождения и добавить один год после создания второго объекта с консоли. Ведь мы, как дни рождения;)

+0

Можете ли вы разместить свой код? –

+3

Что вы подразумеваете под словом «применяется только ко второму объекту»? (Я сомневаюсь в мудрости разработки метода 'hasBirthday', который тоже мутирует состояние ... это звучит так, как будто он * проверяет * что-то и возвращает ответ.) –

+0

Если в массиве есть второй объект, метод hasBirthday будет вызывать и обновлять объект на один дополнительный год (возраст) и сообщение, чтобы сообщить пользователю об изменениях. Да более или менее нравится давать ответ на программу для второго объекта и уведомление пользователю об изменениях. – Sun

ответ

1

Я считаю, что вы имеете в виду это:

person.get(1).hasBirthday(); 

, который будет вызывать метод hasBirthday на втором объекте в списке (если он существует).

+0

Отлично! Я был близок с person.get (1), позвольте мне попробовать остальные, чтобы посмотреть, как я справляюсь. благодаря! – Sun

+0

Да, это работает! Еще раз спасибо! – Sun

+1

Рад, все в порядке. В следующий раз я рекомендую вам искать просто структуру/метод, в котором вам нужна помощь, например «java arraylist». Документация Java довольно богата и почти всегда полезна. – 3yakuya

0
ArrayList<Person> person = new ArrayList<Person>(); 
person.add(new Person(someParam1)); 
person.add(new Person(someParam2)); 
person.add(new Person(someParam3)); 

if (person.size() >= 2) { 
    Person secondPerson = person.get(1); 
    secondPerson.hasBirthday(); 
} 
+0

Дело в том, что пользователь добавит информацию с консоли, и массив обновит информацию. Последняя часть была тем, кого я искал. Спасибо за ответ! – Sun

0

Вот безопасный способ сделать это:

if(person.size() >1 && person.get(1) != null){ 
    person.get(1).hasBirthday(); 
} 

Это проверяет List является правильной длины, а значение по этому индексу не является нулевым.

Я бы переименовал ваш метод hasBirthday на что-то вроде increaseAge или сеттер, чтобы назначить возраст, например setAge, если возраст - это то, что вы позволяете назначать. Названия описательного метода полезны.

+0

Да, я полностью согласен с несколькими изменениями. Мне не хватало части .hasBirthday. Спасибо за ответ! – Sun

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