0

我有一个下面的方法,它返回一个包含所有元素的枚举集Types

@Override
public EnumSet<?> groupTypes() {
    return EnumSet.allOf(Types.class);
}

如下所示Typesenum

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 ?
4

1 回答 1

0

错误

错误:不兼容的类型:推理变量 E 的边界不兼容 return 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;
}
于 2014-12-13T15:24:00.350 回答