java枚举集,不兼容类型:推理变量E具有不兼容的边界

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

我使用下面的方法返回包含所有类型元素的枚举集:

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 ?
错误

错误:不兼容类型:推理变量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;
}