2013-09-05 11 views

Odpowiedz

7

Nic nie robi. Jest prywatny, więc nie możesz go zaimportować.

To naprawdę komentarz, że typ jest "SelfComparable" i nie jest faktycznie używany.

Nic nie implementuje tego interfejsu. Kod, który go używa, polega na tym, że zostanie on odrzucony w czasie wykonywania.

public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) { 
    if (comp==null) 
     return (T)max((Collection<SelfComparable>) (Collection) coll); 

mogło

public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) { 
    if (comp==null) 
     return (T)max(/*SelfComparable*/ (Collection) coll); 

jak to będzie ignorowany przy starcie.

+1

ma -> nie robi? – Kent

+0

@Kent co to znaczy :) – Prateek

+0

@Prateek to oznacza, że ​​pomieszałem moje słowa. :) –

2

Od source:

private interface SelfComparable extends Comparable<SelfComparable> {} 

To nic więcej niż marker nad Comparable<SelfComparable>, co w zasadzie oznacza, że ​​jest to marker dla porównawczych, które porównują do siebie. Jego użycie jest nieco zbyteczne.

Jest używany jako:

return (T)min((Collection<SelfComparable>) (Collection) coll); 

na line 662 gdzie w zasadzie rzuca kolekcję Collection, a następnie wykonuje obsady dla parametru generic być SelfComparable który właśnie rozciąga Comparable.