estoy mirando algunas clases Java que tienen la siguiente forma:¿Qué hace este paradigma de genéricos de Java y cómo se llama?
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
}
Mi uso de "comparables" aquí es sólo para ilustrar un posible uso del parámetro genérico "E". ¿Este uso de genéricos/herencia tiene un nombre? ¿Para qué se usa esto?
Mi impresión es que esto permite que la clase abstracta proporcione una implementación común de un método (como compareTo) sin tener que proporcionarlo en las subclases. Sin embargo, en este ejemplo, a diferencia de un método heredado, restringiría subclases para invocar compareTo en otras instancias de la misma subclase, en lugar de cualquier subclase "A". Suena bien?
De todos modos, es curioso si algún gurú ha visto esto antes y sabe lo que hace.
Gracias!
Esa página wiki tiene esencialmente la explicación que estaba buscando, ¡gracias! La nota sobre el polimorfismo "estático" en tiempo de compilación me pareció bastante interesante. – Tom
Aquí hay una buena discusión orientada a Java: http://madbean.com/2004/mb2004-3/ Busque el encabezado "Más trucos con parámetros de tipo" –
URLs [se deben incluir en una respuesta para leer solo ] (http://meta.stackexchange.com/q/8259). Esta respuesta parece depender en gran medida del contenido de una URL y se beneficiaría de un resumen de la URL incluida en la respuesta. –