Java Generics问题:类型参数E不在其范围内

Kra*_*aus 8 java generics

我有一个关于泛型的问题.我有这个根本不编译的方法.编译器告诉我:type parameter E is not within its bound.我在理解编译器错误时通常没有问题,但这个问题非常棘手.也许我对仿制药的知识需要改进.:-)谁能告诉我什么是错的?

public static <E extends Enum & StringConvertableEnum<E>> Map<String, E> map(Class<E> enumClass) {
    Map<String, E> mapping = new HashMap<String, E>();

    EnumSet<E> set = EnumSet.allOf(enumClass);

    for(E enumConstant : set) {
        mapping.put(enumConstant.getStringValue(), enumConstant);
    }

    return mapping;
}
Run Code Online (Sandbox Code Playgroud)

这是以下定义StringConvertableEnum:

public interface StringConvertableEnum<E extends Enum> {
    public E getEnumFromStringValue(String string);
    public String getStringValue();
}
Run Code Online (Sandbox Code Playgroud)

Yis*_*hai 9

您需要将声明更改为 E extends Enum<E>

编辑,抱歉不得不离开,我的意思是完整的声明是:

public static <E extends Enum<E> & StringConvertableEnum<E>> Map<String, E> map(Class<E> enumClass) {
Run Code Online (Sandbox Code Playgroud)