Sto guardando alcune classi Java che hanno la seguente forma:Che cosa fa questo paradigma di generics Java e come si chiama?
public
abstract
class A <E extends A<E>> implements Comparable <E> {
public final int compareTo(E other) {
// etc
}
}
public
class B extends A <B> {
// etc
}
public
class C extends A <C> {
// etc
}
mio uso di "comparabile" qui è solo per illustrare un possibile utilizzo del parametro generico "E". Questo uso di generici/eredità ha un nome? A cosa serve?
La mia impressione è che questo consenta alla classe astratta di fornire un'implementazione comune di un metodo (come compareTo) senza doverlo fornire nelle sottoclassi. Tuttavia, in questo esempio, diversamente da un metodo ereditato, limiterebbe le sottoclassi a invocare il confronto su altre istanze della stessa sottoclasse, piuttosto che su una sottoclasse "A". Suona bene?
In ogni caso, è curioso di sapere se qualche guru là fuori l'ha già visto e sa cosa fa.
Grazie!
Questa pagina wiki ha essenzialmente la spiegazione che stavo cercando, grazie! Ho trovato piuttosto interessante la nota sul polimorfismo "statico" in fase di compilazione. – Tom
Qui c'è una bella discussione su Java: http://madbean.com/2004/mb2004-3/ Cerca l'intestazione "Altri trucchi con i parametri del tipo" –
URL [dovrebbe essere incluso in una risposta per ulteriori letture ] (http://meta.stackexchange.com/q/8259). Questa risposta sembra fare molto affidamento sul contenuto di un URL e trarrebbe vantaggio da un riepilogo dell'URL incluso nella risposta. –