java不兼容类型T无法转换为枚举
代码在eclipse中运行良好,但在尝试用intellij IDEA编译时出现以下错误java不兼容类型T无法转换为枚举,java,generics,Java,Generics,代码在eclipse中运行良好,但在尝试用intellij IDEA编译时出现以下错误 public class Sample{ private Map<Class<Enum>, IConverter<? extends Enum<?>>> enumConverter = Maps.newHashMap(); public <T extends Enum<T>> T getEnumAttribute(String
public class Sample{
private Map<Class<Enum>, IConverter<? extends Enum<?>>> enumConverter = Maps.newHashMap();
public <T extends Enum<T>> T getEnumAttribute(String key, final Class<T> ee){
IConverter<T> e = (IConverter<T>)enumConverters.get(ee);
if ( e == null ){
e = new IConverter<T>() {
@Override
public String toString(T val) {
return val.toString();
}
@Override
public Class<T> getType() {
return ee;
}
@Override
public T fromString(String val) {
return Enum.valueOf(ee, val);
}
};
enumConverters.put((Class<Enum>) ee, e);
}
return getAttribute(key, e);
}
public static interface IConverter<T> extends Serializable{
public T fromString(String val);
public String toString(T val);
public Class<T> getType();
}
}
公共类示例{
私有地图A类
不是类
,正如类
不是类
,或者列表
不是列表
将地图声明更改为:
private Map<Class<? extends Enum<?>>, IConverter<? extends Enum<?>>> enumConverter = Maps.newHashMap();
private Map>>enumConverter=Maps.newHashMap();
Map是的,对不起,它是非常旧的代码。我怀疑它是否能编译,不管它有多旧。更改Map>,IConverter>,您就会发现类不是类。