Java- De betekenis van <T breidt Comparable<T>>?

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) extendsbetekent 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 MinMaxeen type vereist dat Comparableimplementeert,
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 RClasskunt maken met een type dat letterlijk Comparable<T>uitbreidt. Dus,

RClass<Integer> a;

is acceptabel, aangezien IntegerComparable<Integer>uitbreidt, terwijl

RClass<Object> b;

is niet, aangezien Objectgeen klasse is die vergelijkbaar is.


Antwoord 5, autoriteit 4%

Ja, en onthoud dat objecten van klassen afgeleid van ComparableZIJNComparableobjecten. Overerving is een is-arelatie.


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.

Other episodes