2011-03-18 3 views
2

같은 삭제 컴파일 시간 :자바 내가 같은 클래스에서 두 가지 방법이 오류

public static Set<Type A> valueOf (Set<Type B>) 
{} 

public static Set<Type A> valueOf (Set<Type B>) 
{} 

내가 같은 삭제가 컴파일시 오류가 무엇입니까. 어떻게 해결할 수 있습니까?

+0

정확하게 오류가 무엇인지 명시하십시오. – gideon

+3

위의 두 가지 방법은 동일합니다. 이는 분명히 실수입니다. 고칠 메시지를 편집 할 수 있습니까? –

+0

질문은 - 같은 방법을 두 번 정의하려는 이유는 무엇입니까? 컴파일러는 실행시 어느 것을 선택해야합니까? 해결책은 분명히 두 가지 방법을 의미 론적으로 분리하는 것입니다. 참고 사항 : http://stackoverflow.com/questions/1998544/method-has-the-same-erasure-as-another-method-in-type –

답변

4

귀하의 방법은 완전히 동일합니다. 컴파일러는 사용할 코드를 알 수 없습니다.

또한, 경우에 당신은 어떻게 든

public static Set<Type A> valueOf (Set<Type A>) 
{} 

public static Set<Type B> valueOf (Set<Type B>) 
{} 

그 두 가지 방법은 또한, 유형 식별자 (AB)가 컴파일러에 의해 삭제 얻을 동일 의미, 그래서 그들은 다시 같은 서명을 가진 끝.

1

무슨 일이 벌어지고 있는지 알기 위해서는 각 <GenericSomething>Object으로 바꾸십시오. 컴파일러에서 보는 것이므로 type erasure입니다. 간단히 말해서 두 방법 모두 동일한 서명을 갖습니다. 즉

public static Set<Object> valueOf (Set<Object>) 
{} 
관련 문제