use*_*383 0 java generics object
我希望有一个子类对象的集合,但我的泛型类型实现,因为它现在给出一个错误,allItems.add(item);因为allItems不保持Item类型.那么如何更改以下代码而不是出错呢?
public class ItemManager {
public static Collection<? extends Item> allItems;
...
public static boolean addItem(Item item){
return allItems.add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
可能会添加一个新项目:
itemManager.add(new Bomb());
Run Code Online (Sandbox Code Playgroud)
有没有办法addItem改为:
public static boolean addItem([all subclasses of Item] item) { ... }
Run Code Online (Sandbox Code Playgroud)
或者可能改变allItems所以它可以接受接收Item和子类Item?
该集合应声明为Collection<Item>.
Collection<? extends Item>表示:一个未知类的集合,它是或扩展Item.您无法向此类集合添加任何内容,因为您不知道它所拥有的对象类型.
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |