我有一个下面的方法,它返回一个包含Types
所有元素的枚举集:
@Override
public EnumSet<?> groupTypes() {
return EnumSet.allOf(Types.class);
}
Types
是enum
,如下所示:
public enum Types implements GroupType {
ASG;
}
GroupType
界面是:
public interface GroupType extends NamedType {
}
NamedType
界面:
public interface NamedType {
String name();
}
编译时,我得到以下错误:
error: incompatible types: inference variable E has incompatible bounds
return EnumSet.allOf(Types.class);
^
equality constraints: Types
upper bounds: Enum<CAP#1>,Enum<E>
where E is a type-variable:
E extends Enum<E> declared in method <E>allOf(Class<E>)
where CAP#1 is a fresh type-variable:
CAP#1 extends Enum<CAP#1> from capture of ?
答案 0 :(得分:0)
错误
错误:不兼容的类型:推理变量E不兼容 bounds返回EnumSet.allOf(Types.class);
告诉你问题是什么。解决的一种方法是像这样更改签名
public EnumSet<? extends NamedType> groupTypes() {
return EnumSet.allOf(Types.class);
}
或者您只需将EnumSet.allOf(Types.class)
分配给变量,然后就不需要像这样更改方法签名
public EnumSet<?> groupTypes() {
EnumSet<Types> typeses = EnumSet.allOf(Types.class);
return typeses;
}