问题空间已被清除。
所以我有以下无法更改的界面。
public interface ItemInterface {
Set<Enum<?>> getItems();
}
我创建了Items枚举类
public enum Item{
ITEM1, ITEM2, ITEM3
}
所以当我实现方法时,它不会编译。
public class ItemImpl implements ItemInterface {
@Override
public Set<Enum<?>> getItems() {
Set<Item> vals = new HashSet<>();
vals.add(Item.ITEM1);
return vals;
}
}
返回类型不匹配,我得到编译错误吗?有什么想法吗?
答案 0 :(得分:4)
只需将vals
声明为Set<Enum<?>>
:
public class ItemImpl implements ItemInterface {
@Override
public Set<Enum<?>> getItems() {
Set<Enum<?>> vals = new HashSet<>();
vals.add(Item.ITEM1);
return vals;
}
}
答案 1 :(得分:0)
怎么样,我已经更改了界面,因为它的可读性很强。如果您的界面是任何其他软件包的一部分,则可以使用@Lino答案
public interface ItemInterface {
Set<? extends Enum> getItems();
}
public enum Item implements ItemInterface{
ITEM1, ITEM2, ITEM3;
@Override
public Set<? extends Enum> getItems() {
Set<Item> as = new HashSet<>();
as.add(ITEM3);
return as;
}
}