使用此代碼,編譯器告訴我我具有不兼容的類型(「需要設置< Item>但具有Set < Weapon>」)。聲明子類時不兼容的類型
import java.util.Set;
class clazz extends AbstractClass{
private Set<Weapon> items;
@Override
Set<Item> getItems() {
return items; //Incompatible Types here
}
}
abstract class AbstractClass {
abstract Set<Item> getItems();
}
interface Item {
}
interface Weapon extends Item {
}
我不明白這一點,如果武器是項目的子接口,我想我應該能夠在地方項目中使用它。
我可以通過寫
import java.util.Set;
class clazz extends AbstractClass{
private Set<Weapon> items;
@Override
Set<? extends Item> getItems() {
return items;
}
}
abstract class AbstractClass {
abstract Set<? extends Item> getItems();
}
這是爲什麼不允許你能向我解釋,解決這一問題?
這傢伙的答案可能會解決你的問題。他有很好的解釋 https://stackoverflow.com/a/6319181/7450269 – RootOnChair