Java Generics Вопрос: параметр типа E не входит в его граница

У меня вопрос о дженериках. У меня есть этот метод, который вообще не компилируется. Компилятор сообщает мне: параметр типа E находится вне его границ . Обычно у меня нет проблем с пониманием ошибок компилятора, но это довольно сложно. Может быть, мои знания о дженериках нужно улучшить. :-) Кто-нибудь может сказать мне, что не так?

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;
}

Это определение StringConvertableEnum :

public interface StringConvertableEnum<E extends Enum> {
    public E getEnumFromStringValue(String string);
    public String getStringValue();
}
8
задан Kraushauslaus 23 January 2011 в 18:09
поделиться