같은 삭제 컴파일 시간 :자바 내가 같은 클래스에서 두 가지 방법이 오류
public static Set<Type A> valueOf (Set<Type B>)
{}
public static Set<Type A> valueOf (Set<Type B>)
{}
내가 같은 삭제가 컴파일시 오류가 무엇입니까. 어떻게 해결할 수 있습니까?
같은 삭제 컴파일 시간 :자바 내가 같은 클래스에서 두 가지 방법이 오류
public static Set<Type A> valueOf (Set<Type B>)
{}
public static Set<Type A> valueOf (Set<Type B>)
{}
내가 같은 삭제가 컴파일시 오류가 무엇입니까. 어떻게 해결할 수 있습니까?
귀하의 방법은 완전히 동일합니다. 컴파일러는 사용할 코드를 알 수 없습니다.
또한, 경우에 당신은 어떻게 든
public static Set<Type A> valueOf (Set<Type A>)
{}
public static Set<Type B> valueOf (Set<Type B>)
{}
그 두 가지 방법은 또한, 유형 식별자 (A
및 B
)가 컴파일러에 의해 삭제 얻을 동일 의미, 그래서 그들은 다시 같은 서명을 가진 끝.
무슨 일이 벌어지고 있는지 알기 위해서는 각 <GenericSomething>
을 Object
으로 바꾸십시오. 컴파일러에서 보는 것이므로 type erasure입니다. 간단히 말해서 두 방법 모두 동일한 서명을 갖습니다. 즉
public static Set<Object> valueOf (Set<Object>)
{}
정확하게 오류가 무엇인지 명시하십시오. – gideon
위의 두 가지 방법은 동일합니다. 이는 분명히 실수입니다. 고칠 메시지를 편집 할 수 있습니까? –
질문은 - 같은 방법을 두 번 정의하려는 이유는 무엇입니까? 컴파일러는 실행시 어느 것을 선택해야합니까? 해결책은 분명히 두 가지 방법을 의미 론적으로 분리하는 것입니다. 참고 사항 : http://stackoverflow.com/questions/1998544/method-has-the-same-erasure-as-another-method-in-type –