Java动态创建类的实例

汉斯·范德兰

我正在做一个小型纸牌游戏。在此游戏中,新玩家是扩展通用玩家类的AIPlayer或HumanPlayer类的实例。

当前要生成播放器,我有以下代码:

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,然后为它们生成类的实例。如果是这样,怎么办?

编辑:为了更清楚,我正在寻找是否有可能这样的事情:

for(int i=0; i<x; i++){
player i = new Player("i");
i.addObserver(gameModelObserver);
players.add(i); }
安德里亚·雅科诺(Andrea Iacono)

大概是这样的:

class Player {

    String name;
    Type type;

    public Player(String name, Type type) {
        this.name = name;
        this.type = type;
    }
}

Player[] playersList = { new Player("playerA", Type.HUMAN), new Player("playerB", Type.AI)};
for (Player player: playersList) {
    if (player.type == Type.AI) {
            AIPlayer aiPlayer = AIPlayer.class.getConstructor(String.class).newInstance(player.name);
            aiPlayer.addObserver(gameModelObserver);
            players.add(aiPlayer);                                    }
    else {
            HumanPlayer humanPlayer = HumanPlayer.class.getConstructor(String.class).newInstance(player.name);
            humanPlayer.addObserver(gameModelObserver);
            players.add(humanPlayer);
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章