我今天在一个内部图书馆的一部分工作,并希望通过在我们的“游戏”课程中添加基本的泛型来改进一些东西.
这是现在改变的游戏类的精简版:
public abstract class Game {
private final List players;
public Game() {
this.players = new LinkedList<>();
}
public Collection getPlayers() {
return players;
}
}
非常标准,我知道.但是当我想在这样的游戏模块中使用getPlayers()方法时:for(GamePlayer player:game.getPlayers())它给我的全部错误是返回类型等于“Collection< Object>”而不是“Collection< G>”.
我拥有的所有其他函数(如G getPlayer(String name))返回正确的类型,但不返回getPlayers函数.
我真的想避免这个库的实现将他们的玩家投射到类似的东西上
MyGamePlayer player =(MyGamePlayer)myGame.getPlayer(“dummy”).
我对仿制药做了什么错?
编辑:
这是包含for循环的类:
public class GiftTask implements Runnable {
private final Game game;
private final Item[] items;
public GiftTask(Game game, List itemList) {
this.game = game;
this.items = itemList.toArray(new Item[itemList.size()]);
}
@Override
public void run() {
for (GamePlayer player : game.getPlayers()) { // This line has the error
player.getInventory().addItem(items);
}
}
}