Con una clase abstracta quiero definir un método que devuelve "este" de las subclases:devolver un objeto subclasifican con los genéricos
public abstract class Foo {
...
public <T extends Foo> T eat(String eatCake) {
...
return this;
}
}
public class CakeEater extends Foo {}
Quiero ser capaz de hacer cosas como:
CakeEater phil = new CakeEater();
phil.eat("wacky cake").eat("chocolate cake").eat("banana bread");
Podría decirse que el pan de plátano arrojaría una IllegalArgumentException con el mensaje "¡No es un pastel!"
Debería ser 'Foo>'. Esto funciona, aunque puedes crear fácilmente una clase que explote con una 'ClassCastException' cuando llamas' eat', como 'class Bar extends Foo '. –
ColinD
Esta es la solución que terminé usando, pero notará que la devolución tiene una advertencia de lanzamiento desactivada. Si bien, lógicamente, tiene sentido que podamos convertir a T ya que esta es una subclase de T. – Sarabjot
Sí.En un mundo mejor, Java podría tener un tipo 'This', que sería muy útil en muchos casos. – irreputable