使用实现接口的Enum集合

时间:2015-11-25 10:05:47

标签: java enums

我有一个界面

public interface State {
    String name();
}

想要收集所述州的函数

void processStates(Collection<State> states){
//...
}

和实现此

的枚举
public enum StatesEnum implements State {
    DUMMYSTATE1
}

当我尝试调用这样的函数时

List<StatesEnum> listOfStates = new ArrayList<>();
listOfStates.add(DUMMYSTATE1);
processStates(listOfStates)

这会产生Error:(29, 78) java: incompatible types: java.util.List<StatesEnum> cannot be converted to java.util.Collection<State>

我对枚举有什么理解?

1 个答案:

答案 0 :(得分:2)

java.util.List<StatesEnum> cannot be converted to java.util.Collection<State>这说明了一切,您无法将List<StatesEnum>类型分配给Collection<State>

(Collection<State> states)更改为(Collection<? extends State> states,但请记住,在此之后您将无法向null添加除states以外的任何内容。