无法将fom枚举转换为它实现的接口

St.*_*rio 3 java enums

我在Java 7,我有以下枚举:

public enum BooleanEnum implements StringRepresentable{
    YES {
        @Override
        public String getStringRepresentation() {
            return "true";
        }
    },
    NO {
        @Override
        public String getStringRepresentation() {
            return "false";
        }
    };
    public abstract String getStringRepresentation();
}
Run Code Online (Sandbox Code Playgroud)

现在我有了方法:

List<StringRepresentable> getValues(){
    return Arrays.asList(BooleanEnum.values()); //Type mismatch: 
                  //cannot convert from List<BooleanEnum> to List<StringRepresentable>
}
Run Code Online (Sandbox Code Playgroud)

这有什么问题enum?它实现了接口,因此代码应该编译得很好.

Jon*_*eet 8

它实现了接口,因此代码应该编译得很好.

不,因为类型参数被推断为BooleanEnum- 并且a List<BooleanEnum>不是List<StringRepresentation>......您可以向后者添加其他 StringRepresentation实现的实例.

四种可能的选择: