带有枚举的泛型集
Generics Set with Enums
问题 space 已被简化。
所以我有以下无法更改的界面。
public interface ItemInterface {
Set<Enum<?>> getItems();
}
我已经创建了 Items 枚举 class
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;
}
}
return 类型不匹配,出现编译错误?有什么想法吗?
只需将 vals
声明为 Set<Enum<?>>
:
public class ItemImpl implements ItemInterface {
@Override
public Set<Enum<?>> getItems() {
Set<Enum<?>> vals = new HashSet<>();
vals.add(Item.ITEM1);
return vals;
}
}
这个怎么样,我已经更改了界面,因为它只是让它有点可读性。如果您的界面是任何其他包的一部分,可以使用@Lino answer
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;
}
}
问题 space 已被简化。
所以我有以下无法更改的界面。
public interface ItemInterface {
Set<Enum<?>> getItems();
}
我已经创建了 Items 枚举 class
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;
}
}
return 类型不匹配,出现编译错误?有什么想法吗?
只需将 vals
声明为 Set<Enum<?>>
:
public class ItemImpl implements ItemInterface {
@Override
public Set<Enum<?>> getItems() {
Set<Enum<?>> vals = new HashSet<>();
vals.add(Item.ITEM1);
return vals;
}
}
这个怎么样,我已经更改了界面,因为它只是让它有点可读性。如果您的界面是任何其他包的一部分,可以使用@Lino answer
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;
}
}