Я делаю маленькую карточную игру. В этой игре новый игрок является экземпляром класса, AIPlayer или HumanPlayer, который расширяет общий класс игрока.Java создает экземпляры классов на лету
В настоящее время для создания игроков я имею следующий код:
private List<Player> players;
HumanPlayer playerA = new HumanPlayer("playerA");
playerA.addObserver(gameModelObserver);
players.add(playerA);
AIPlayer playerB = new AIPlayer("playerB");
playerB.addObserver(gameModelObserver);
players.add(playerB);
AIPlayer playerC = new AIPlayer("playerC");
playerC.addObserver(gameModelObserver);
players.add(playerC);
HumanPlayer playerD = new HumanPlayer("playerD");
playerD.addObserver(gameModelObserver);
players.add(playerD);
Можно ли динамически генерировать эти классы? Могу ли я сделать что-то вроде итерации по всем элементам связанного списка с именем игрока и логическим, чтобы указать, являются ли они AI или Human и затем генерирует для них экземпляр класса. Если да, то как?
Edit: чтобы сделать его более ясным, я смотрю, если что-то, как это возможно:
for(int i=0; i<x; i++){
player i = new Player("i");
i.addObserver(gameModelObserver);
players.add(i); }
Что вы подразумеваете под * динамическим генерированием этих классов *? Вы можете проверить фактические объекты в вашем 'List' через 'instanceof' и соответственно реагировать, но это (по крайней мере, с моей точки зрения) нечеткое решение. Почему вам нужно знать, является ли «Player» «AIPlayer» или «HumanPlayer»? Возможно, ваш дизайн испорчен. –
Turing85
Создайте метод 'addPlayer (String name)'. –
AIPlayer и HumanPlayer имеют разные функции. Я также считаю, что это что-то странное, но я подумал, возможно ли это. –