该代码在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中编译良好,但在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>
我不确定发生了什么问题,我们将不胜感激。
一个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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句