java枚举集,不兼容类型:推理变量E具有不兼容的边界
我使用下面的方法返回包含所有类型元素的枚举集: GroupType接口是:java枚举集,不兼容类型:推理变量E具有不兼容的边界,java,generics,enums,enumset,Java,Generics,Enums,Enumset,我使用下面的方法返回包含所有类型元素的枚举集: GroupType接口是: public interface GroupType extends NamedType { } NamedType接口: public interface NamedType { String name(); } 编译时,我得到以下错误: error: incompatible types: inference variable E has incompatible bounds retu
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 ?
错误
错误:不兼容类型:推理变量E不兼容
边界返回EnumSet.allOfTypes.class
告诉你问题出在哪里。一种解决方法是像这样更改签名
public EnumSet<? extends NamedType> groupTypes() {
return EnumSet.allOf(Types.class);
}
public EnumSet<?> groupTypes() {
EnumSet<Types> typeses = EnumSet.allOf(Types.class);
return typeses;
}
public EnumSet<? extends NamedType> groupTypes() {
return EnumSet.allOf(Types.class);
}
public EnumSet<?> groupTypes() {
EnumSet<Types> typeses = EnumSet.allOf(Types.class);
return typeses;
}