代码在eclipse中正常运行但在尝试在intellij IDEA中编译时出现以下错误
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();
}
}
代码在eclipse中编译正常但在
中抛出错误 enumConverters.put((Class<Enum>) ee, e);
行
Error:(521, 66) java: incompatible types: java.lang.Class<T> cannot be converted to java.lang.Class<java.lang.Enum>
我不确定有什么问题,我们将非常感谢任何帮助。
答案 0 :(得分:2)
Class<T extends Enum<T>>
不是Class<Enum>
,正如Class<String>
不是Class<Object>
,或List<T>
不是List<Object>
}}
将地图声明更改为:
private Map<Class<? extends Enum<?>>, IConverter<? extends Enum<?>>> enumConverter = Maps.newHashMap();