gpt4 book ai didi

java - 指定子类中集合的类型

转载 作者:行者123 更新时间:2023-12-01 07:24:23 25 4
gpt4 key购买 nike

我有一个应用程序,用户可以在其中玩多种类型的游戏。每个游戏都扩展了 Game 类,其中包含与游戏相关的各种内容。每个游戏还有一个关联的用户类,它扩展了 User(包含电子邮件、用户名等),例如 ChessUserScrabbleUser,其中包含统计信息和其他内容有关游戏的用户信息。

在每个 Game 类中,我需要当前正在玩游戏的所有用户的列表。由于所有游戏都需要此列表,我想将其放置在 User 类中,但由于它包含玩游戏的用户类型(ChessGame 将包含 ChessUsers 列表),如果没有,我无法做到这一点检索时转换值,这是我宁愿不做的。有没有办法在不转换检索到的值的情况下执行此操作?

一些示例代码:

public class Game {
private List<Player> players;

public Player getPlayer(int index) {
return players.get(index);
}
}

public class Player {
private String username;
private String email;
}

public class ChessGame extends Game {
// getPlayer now needs to return a ChessPlayer, hopefully without casting
}

public class ChessPlayer extends Player {
private int checkmates;
}

最佳答案

使用泛型:

public class Game<T extends Player> {

private List<T> players;

public T getPlayer(int index) {
return players.get(index);
}
}

public class Player {
private String username;
private String email;
}

public class ChessPlayer extends Player {

}

public class Chess extends Game<ChessPlayer> {

}

关于java - 指定子类中集合的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com