Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Вытащить класс из коллекции типа абстрактного класса

#java #коллекции


Всем привет !

Каким образом можно вытащить класс из коллекции (на примере)

Имеется абстрактный класс Игрок:

public Player(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }


Имеется класс Вратарь

public GoalKeeper(String firstName, String lastName, int age, int handling, int aerialAbility) {
        super(firstName, lastName, age);
        this.handling = handling;
        this.aerialAbility = aerialAbility;
    }


Позже я создаю объект и помещаю его в коллекцию типа Игрок (абстрактный класс)

players = new ArrayList();

        players.add(new GoalKeeper("Олег", "Газманов", 11, 44, 35));


Каким образом я могу из этой коллекции вытащить данные класса Вратарь ?
Спасибо !
    


Ответы

Ответ 1



Необходимо проверить и привести тип: Player player = players.get(0); //или другой индекс if (player instanceof GoalKeeper) { GoalKeeper goalKeeper = (GoalKeeper) player; //... }

Ответ 2



Можно использовать instanceof, но, на мой взгляд, лучше добавить перечисление с возможными позициями игроков: enum Position { GK, DC, FW // etc } abstract class Player { abstract Position getPosition(); ... } class GoalKeeper { @Override Position getPosition() { return Position.GK; } ... }

Комментариев нет:

Отправить комментарий