0

问题空间已被剥离。

所以我有以下我无法改变的界面。

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;  
    }
}

返回类型不匹配,我得到编译错误?有任何想法吗?

4

2 回答 2

4

只需声明valsSet<Enum<?>>

public class ItemImpl implements ItemInterface {

    @Override
    public Set<Enum<?>> getItems() {
        Set<Enum<?>> vals = new HashSet<>();
        vals.add(Item.ITEM1);
        return vals;  
    }
}
于 2020-06-26T09:41:29.790 回答
0

这个怎么样,我已经改变了界面,因为它只是让它有点可读。如果您的界面是任何其他包的一部分,则可以使用@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;
    }
}
于 2020-06-26T09:58:29.030 回答