我使用的Java 6和我的应用程序是巨大的,它在Java开发的6 现在我们要升级Java版本为7的valueOf()枚举法是不是在java中工作7
但是,当我试过它到java 7它会给enum类编译错误。 在枚举类中,我定义了valueOf()方法,所以在Java 7中它给编译错误。
代码
public enum TestEnum {
TESTONE,TESTTWO, NONE;
public String toString() {
switch(this) {
case TESTONE:
return "Test one";
case TESTTWO:
return "Test two";
case NONE:
return "None";
}
return null;
};
public static TestEnum valueOf(Class<TestEnum> enumType, String value){
if(value.equalsIgnoreCase(TESTONE.toString()))
return TestEnum.TESTONE;
else if(value.equalsIgnoreCase(TESTTWO.toString()))
return TestEnum.TESTTWO;
else if(value.equalsIgnoreCase(NONE.toString()))
return TestEnum.NONE;
else
return null;
}
}
错误
Name clash: The method valueOf(Class<TestEnum>, String) of type TestEnum has the
same erasure as valueOf(Class<T>, String) of type Enum<E> but does not hide it TestEnum.java
更新(解决)
我改变的valueOf()方法和我的文件编译。
public static TestEnum valueOf(TestEnum enumType, String value){
if(value.equalsIgnoreCase(TESTONE.toString()))
return TestEnum.TESTONE;
else if(value.equalsIgnoreCase(TESTTWO.toString()))
return TestEnum.TESTTWO;
else if(value.equalsIgnoreCase(NONE.toString()))
return TestEnum.NONE;
else
return null;
}
一方面,在'类'参数未使用;对于另一个,它是多余的,因为该类型的唯一类是'TestEnum.class'。 –
这段代码在TestEnum中得到了'error:name clash:valueOf(,String)类,并且中的valueOf(Class ,String)具有相同的擦除,但在使用'-source 1.6'编译时不隐藏另一个'。 –
EJP
@AndyTurner谢谢我删除类<>及其工作 –