我有一个关于泛型的问题。我有这个方法,根本无法编译。编译器告诉我: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;
}
这是定义StringConvertableEnum
:
public interface StringConvertableEnum<E extends Enum> {
public E getEnumFromStringValue(String string);
public String getStringValue();
}
您需要将声明更改为E extends Enum<E>
编辑,抱歉不得不离开,我的意思是完整的声明是:
public static <E extends Enum<E> & StringConvertableEnum<E>> Map<String, E> map(Class<E> enumClass) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)