De volledige context is:
public class RClass<T extends Comparable<T>>
Zou ik gelijk hebben als ik zeg dat de verklaring in de titel betekent dat de argumenten die in de methode zijn aangesloten, ofwel een object moeten zijn van een klasse die Comparable implementeert OF een van zijn afgeleide klassen?
Bedankt.
Antwoord 1, autoriteit 100%
Dit betekent dat de type parameter vergelijking met andere instanties van zijn eigen type moet ondersteunen, via de Vergelijkbare interface.
Een voorbeeld van zo’n klasse wordt gegeven in de Oracle-zelfstudie Object Ordering. Let op het patroon dat vergelijkbaar is met T extends Comparable<T>
uit in het onderstaande fragment:
public class Name implements Comparable<Name> {
...
public int compareTo(Name n) { ... }
}
Antwoord 2, autoriteit 35%
Java- De betekenis van<T extends Comparable<T>>
?
a) Comparable <T>
is een generieke interface (onthoud dat het een “interface” is, dus geen “klasse”)
b) extends
betekent overerving van een klasse of een interface.
Van bovengenoemd punt#a is het een interface..(Vergeet niet dat het een erfenis is van een “interface”, d.w.z. niet van een “klasse”)
c)Van bovengenoemde beide punten #a & #b,
hier breidt “één interface” “een andere interface” uit.
Er moet een interface zijn gedefinieerd voor deze klasse..
slechts een voorbeeld hier is
interface MinMax<T extends Comparable<T>> {
T min();
T max();
}
d) nu je klas, d.w.z. public class RClass {}
MOET
1# OFWEL “implementeer” deze “generieke interface” Comparable<T>
..!!!
ex: public class RClass<T> implements Comparable<T>
2# OF maak een interface en breid uit naar deze “generieke interface” Comparable<T>
bijv:
interface MinMax<T extends Comparable<T>> {
T min();
T max();
}
class RClass<T extends Comparable<T>> implements MinMax<T> {
.....
.....
}
Hier,
Besteed speciale aandacht aan de manier waarop de typeparameter T wordt gedeclareerd door RClass en
vervolgens doorgegeven aan MinMax
. Omdat MinMax
een type vereist dat Comparable
implementeert,
de implementerende klasse (RClass in dit geval) moet dezelfde grens specificeren. Verder,
als deze grens eenmaal is vastgesteld, is het niet nodig om deze opnieuw te specificeren in de implements-clausule.
Antwoord 3, autoriteit 16%
Ergens in die klas moet de programmeur iets schrijven als
if(t.compareTo(othert) < 0) {
...
}
Om dat te laten werken, moet het type T een CompareTo-methode hebben die het vergelijkt met een ander object van het type T. Comparable uitbreiden garandeert onder andere het bestaan van een dergelijke methode.
Antwoord 4, autoriteit 6%
Het betekent dat je alleen een instantie van RClass
kunt maken met een type dat letterlijk Comparable<T>
uitbreidt. Dus,
RClass<Integer> a;
is acceptabel, aangezien Integer
Comparable<Integer>
uitbreidt, terwijl
RClass<Object> b;
is niet, aangezien Object
geen klasse is die vergelijkbaar is.
Antwoord 5, autoriteit 4%
Ja, en onthoud dat objecten van klassen afgeleid van Comparable
ZIJNComparable
objecten. Overerving is een is-a
relatie.
Antwoord 6, autoriteit 4%
Simpel gezegd, het generieke type T moet vergelijkbaar zijn om te kunnen vergelijkenTo. anders kunt u T.compareTo niet doen.
In Item 28 Effective java stelt het het volgende voor: "always use Comparable<? super T> in preference to Comparable<T>. <T extends Comparable<? super T>>"
Antwoord 7, autoriteit 2%
==>guhanvj, <T extends Comparable<T>>
betekent dat <T>
een bovengrens heeft van Comparable<T>
objecten. Dus <T>
kan typen Byte, Character, Double, Float, Long, Short, String en Integer hebben die allemaal de Comparable<T>
-interface voor natuurlijke bestellen.