¿Hay alguna manera de decir "este método devuelve this
" usando Generics?¿Hay alguna manera de decir "el método devuelve esto" en Java?
Por supuesto, quiero anular este método en subclases, por lo que la declaración debería funcionar bien con @Override
.
Aquí se muestra un ejemplo:
class Base {
public Base copyTo (Base dest) {
... copy all fields to dest ...
return this;
}
}
class X extends Base {
@Override
public X copyTo (X dest) {
super.copyTo (dest);
... copy all fields to dest ...
return this;
}
}
public <T extends Base> T copyTo (Base dest)
no funciona en absoluto: me sale "No coinciden los tipos: no se puede convertir de base a T". Si lo forzo con un yeso, la anulación falla.
Aparte de mi (bueno, de Martin Odersky) forma; detallado arriba –
Sí, aunque hay formas de implementar ese tipo de cosas sin que "Esto" * en realidad * sea Esto. –
Bueno, "Esto" puede ser cualquier cosa que implemente la interfaz List , que debido a borrado podría ser una Lista de cualquier cosa. Me interesaría si pudieras engañarlo por completo –