tengo una interfazgenéricos de Java: Advertencia necesita un molde sin marcar para ajustarse a <InterfaceName>
interface x {
A getValue();
}
y la implementación
class y implements x {
public B getValue() { return new B();}
}
B es una subclase de A. Esto funciona gracias a las covariantes anulando, supongo.
Pero si vuelvo a escribir la interfaz como
interface x{
<T extends A> T getValue();
}
recibo una advertencia de que en la ejecución
Advertencia necesita un molde sin marcar para ajusta a A.getValue()
¿Cuál es la diferencia entre 2 versiones de la interfaz? Estaba pensando que son lo mismo.
Curiosamente, cuando lo cambio a "' interfaz x {T getValue();} '", la advertencia desaparece. –
Sí, creo que en este caso el compilador tiene una forma de averiguar qué es T de la declaración de clase. Pero en otro caso no hay forma de que descubra qué es T. – Surya