У меня вопрос о дженериках. У меня есть этот метод, который вообще не компилируется. Компилятор сообщает мне: параметр типа 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();
}