2017-10-25 6 views
-1

T 및 S가 Foo를 확장하는 MyClass의 Comparator를 만들고 싶습니다. MyClass<T, S>으로 정의 된 클래스가 있습니다.java - 형식 매개 변수를 포함하는 형식의 Comparator 만들기

어떻게해야합니까?

실패 시도 : 위의

// Warning: The type parameter MyClass is hiding the type MyClass<T,S> 
public class MyComparator<MyClass> implements Comparator<MyClass> 

// Syntax errors and the warning from above 
public class MyComparator<MyClass<T, S>> implements Comparator<MyClass<T, S>> 

// Syntax errors 
public class MyComparator<MyClass<T extends Foo, S extends Foo>> implements Comparator<MyClass<T extends Foo, S extends Foo>> 

// Syntax errors and the warning from above 
public class MyComparator<MyClass<? extends Foo, ? extends Foo>> implements Comparator<MyClass<? extends Foo, ? extends Foo>> 

그리고 다양한 조합을 포함 할 수있다. 올바른 방법은 무엇입니까? 고맙습니다.

+0

왜 그 시도가 실패한해야 하는가? 오류 메시지가 나타나거나 의도 한대로 작동하지 않습니까? * "왜 코드가 작동하지 않는 데 도움이됩니까?"라는 질문에 *를 포함시키는 것을 잊지 마십시오. – Zabuza

+4

당신의'Comparator'가'Comparable'을 구현하는 이유는 무엇입니까? – Mena

+0

... 'Comparator <...>'을 구현해야합니다. – Zabuza

답변

1

귀하의 클래스는 일반적이지 않습니다. 항상 같은 유형의 객체를 비교합니다.이 유형은 MyClass<? extends Foo, ? extends Foo>입니다.

그래서

public class MyComparator implements Comparator<MyClass<? extends Foo, ? extends Foo>> 
+0

아하! 네, 그 모든 걸 잊었어요. 고마워요. – user3499973