내가 자바 6을 사용하고 자바에서 작업하지 않고 내 응용 프로그램이 거대하고 그것의 6 이제 우리는 자바 버전으로 7valueOf() 열거의 방법은 7
를 업그레이드하려고 자바 개발 그러나 때 내가 자바 7 그것을 열거 클래스에서 컴파일 오류를 줄 것이다 그것을 시도했다. enum 클래스에서 나는 자바 7에서 valueOf() 메서드를 정의 했으므로 컴파일 오류가 발생합니다.
코드
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 (Class, String) 그리고 열거 형에서 valueOf (Class , 문자열)가 같은 소거를 갖지만'-source 1.6'으로 컴파일 될 때 다른 것을 숨기지 않습니다. –
EJP
@AndyTurner 덕분에 Class <>와 그 작업을 제거했습니다. –