2014-06-07 2 views
-1

누군가가 이것을 어떻게 설명 할 수 있습니까? 이것은 generics 질문이지만 Java로 배우기 때문에 Java로 태그를 붙였습니다.메소드 서명에서 클래스 확장하기

public static <T extends Comparable<? super T>> void quickSort(T[] list) {...}

는 내가 이해하지 못하는 것은이 부분이다 : <T extends Comparable<? super T>>

내가 this보고 시도했지만 명확한 방법으로 그것을 설명하지 않는 것 같습니다.

제 생각에 유전형 T는 제네릭 형식이 제네릭 형식의 수퍼 클래스가되도록 요구하는 Comparable 인터페이스를 확장합니다. 그러나 나는 이것을 정말로 이해하지 못한다.

+3

[여기] (http://docs.oracle.com/javase/tutorial/java/generics/index.html)에서 시작할 수 있습니다. – Christian

+0

감사합니다. 글쎄, 나는 이해합니까? 나는 좋은 것 선발로 정말 도움이 예제가있다, 그래서 만약 너무 많은 시간이 걸릴 것 같아, 그래서 다소 난 단지 코스 교육 과정의 일환으로 간략하게이 개념을 통해 갈거야하지만. – user3717271

답변

1

예 :

public class Y {} 

public class X extends Y implements Comparable<Y> { 
} 
: 클래스 Xextends Comparable을 만족하고 super X ( java generics super keyword)

또 다른 예이다 XX 때문에 Comparable의 일반적인 매개 변수는 Comparable 구현

public class X implements Comparable<X> { 
} 

또 다른 예 :

public class X implements Comparable<Object> { 
} 

하지만이 작동하지 않습니다

public class A {} 

public class X implements Comparable<A> { 
} 

클래스 X으로는 상속 계층의에없는 개체 만 비교합니다.

정렬 알고리즘은 x.compareTo(y)을 호출하기 때문에 컴파일 타임에 유효하다는 것을 알아야합니다.