Java- Il significato di<T extends Comparable<T>>
?
a) Comparable <T>
è un'interfaccia generica (ricordatevi che è una "interfaccia" cioè non una "classe")
b) extends
significa eredità da una classe o un'interfaccia.
Dal suddetto punto # A, è un'interfaccia .. (Ricordate che è un'eredità da una "interfaccia", cioè non da un "classe")
c) Da sopra-detto che sia i punti # a & #b,
qui "un'interfaccia" estende "un'altra interfaccia".
Ci dovrebbe essere un'interfaccia definita per questa classe .. solo un esempio qui è
interface MinMax<T extends Comparable<T>> {
T min();
T max();
}
d) ora la classe cioè public class RClass {}
DOVREBBE
1 # SIA "attuare" questa "interfaccia generica" Comparable<T>
.. !!!
es: public class RClass<T> implements Comparable<T>
2 # o creare un'interfaccia ed estendere a questa "interfaccia generica" Comparable<T>
es:
interface MinMax<T extends Comparable<T>> {
T min();
T max();
}
class RClass<T extends Comparable<T>> implements MinMax<T> {
.....
.....
}
Qui, prestare particolare attenzione al modo in cui il parametro di tipo T è dichiarato da RClass e quindi passato a MinMax
. Perché MinMax
richiede un tipo che implementa Comparable
, la classe di implementazione (RClass in questo caso) deve specificare lo stesso limite. Inoltre, una volta stabilito questo limite, non è necessario specificarlo nuovamente nella clausola implements.
fonte
2014-01-07 09:59:59
Nota, '>' (penso che si possa fare lì), sarebbe preferibile, in quanto si potrebbe desiderare che 'T' sia più preciso dell'implementazione di' Comparable'. –
@ TomHawtin-tackline Puoi dare un esempio del perché questo sia necessario? Supponiamo che io abbia la mia struttura dati Elenco che funziona solo con tipi comparabili. Il modo in cui vorrei specificarlo è MyList di classe pubblica>. Penso che affermerei e imporre che la mia struttura dati funzioni solo con tipi comparabili, in che modo il tuo fraseggio può fare la differenza? –
committedandroider