Java 列表<;T>;返回一个对象集合
今天我正在做一个内部库的一部分,我想通过在“游戏”类中添加基本泛型来改进一些东西 这是现在已更改的游戏类的精简版本:Java 列表<;T>;返回一个对象集合,java,generics,inheritance,Java,Generics,Inheritance,今天我正在做一个内部库的一部分,我想通过在“游戏”类中添加基本泛型来改进一些东西 这是现在已更改的游戏类的精简版本: public abstract class Game<G extends GamePlayer> { private final List<G> players; public Game() { this.players = new LinkedList<>(); } public Colle
public abstract class Game<G extends GamePlayer> {
private final List<G> players;
public Game() {
this.players = new LinkedList<>();
}
public Collection<G> getPlayers() {
return players;
}
}
您应该使用以下选项:
private final Game<GamePlayer> game;
私人决赛;
您使用的是原始类型的
游戏
在我看来一切都很好。你能告诉我们产生错误的代码吗?你如何创建游戏实例(myGame ref)?@SergeyMorozov嗯,get方法工作得很好。我得到了正确的实例类型。我只是在收藏上有这个问题……你使用的是原始类型的Game
?getPlayers
->getPlayers()
,不是吗?这是我的库的一部分(甚至是在计时器上运行的“礼物”模块),所以我没有游戏实现。我一直认为泛型至少会返回它们的基本类型,在本例中是GamePlayer。它适用于getPlayer()
部分,非常好@那么,只需使用Game
@SpaceEmotion我不知道你的getPlayer()
是如何工作的。你看过我在你的问题中链接的重复问题了吗?你不应该使用原始类型,否则你肯定会遇到这样的问题。但是如果像MyGame
这样的实现想要使用“gift”模块怎么办?这是否仍然适用于泛型?(MyGamePlayer
显然扩展了GamePlayer
)@MarkoTopolnik Oops!缺少边界:)
private final Game<GamePlayer> game;