【发布时间】:2015-03-19 08:08:32
【问题描述】:
当我在eclipse中将java版本从jdk1.6升级到jdk1.7时,下面的错误已经开始只在编译模式下抛出。
错误是:
名称冲突:TestEnum 类型的方法 valueOf(Class, String) 与 Enum 类型的 valueOf(Class, String) 具有相同的擦除但不隐藏它
public enum TestEnum {
ABC;
public static TestEnum valueOf(Class<TestEnum> enumType, String value){//This error throw at this line.
return null;
};
}
当我将编译级别从 1.7 更改为 1.6 时,错误消失了。 我不明白为什么这不适用于编译级别 1.7?编译级别 1.7 是否需要进行其他更改?
编辑:
它返回具有指定名称的指定枚举类型的枚举常量。该名称必须与用于在此类型中声明枚举常量的标识符完全匹配。但我没有这种情况,名称不同。有超过100个枚举类具有相同的实现。改变这种产品范围的变化对我来说并不容易。
public enum TestEnum {
ABC;
public String toString() {
switch (this) {
case ABC:
return "Abc";
}
return "";
}
/* public static TestEnum valueOf(Class<TestEnum> enumType, String value){
if(value.equalsIgnoreCase("XYZ")){
return ABC;
}
return null;
};*/
public static void main(String[] args) {
TestEnum t=TestEnum.valueOf(TestEnum.class,"Abc");
System.out.println(t);
}
}
> 线程“主”java.lang.IllegalArgumentException 中的异常:没有枚举常量 com.test.example.TestEnum.Abc 在 java.lang.Enum.valueOf(Enum.java:236) 在 com.test.example.TestEnum.main(TestEnum.java:22)
【问题讨论】: