2013-09-05 12 views

risposta

7

Non fa nulla. È privato, quindi non puoi importarlo.

È davvero un commento che il tipo è "AutoComparable" e non viene effettivamente utilizzato.

Niente implementa questa interfaccia. Il codice che lo usa si basa sul fatto che verrà scartato in fase di runtime.

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

avrebbe potuto essere

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

come verrà ignorato in fase di esecuzione.

+1

fa do -> non funziona? – Kent

+0

@Kent cosa vuol dire :) – Prateek

+0

@Prateek significa che ho mescolato le mie parole. :) –

2

Da source:

private interface SelfComparable extends Comparable<SelfComparable> {} 

Questo non è altro che un indicatore sopra Comparable<SelfComparable>, che in pratica significa che si tratta di un marker per comparables che mettono a confronto a sé. Il suo uso è in qualche modo superfluo.

E 'usato come:

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

su line 662 dove si getta in sostanza una collezione di Collection, e quindi esegue un cast per il parametro generico per essere un SelfComparable che ha appena estende Comparable.