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;