С абстрактным классом я хочу определить метод, который возвращает "this" для подклассов:
public abstract class Foo {
...
public <T extends Foo> T eat(String eatCake) {
...
return this;
}
}
public class CakeEater extends Foo {}
Я хочу иметь возможность делать такие вещи, как:
CakeEater phil = new CakeEater();
phil.eat("wacky cake").eat("chocolate cake").eat("banana bread");
Возможно, банановый хлеб вызовет IllegalArgumentException с сообщением "Не торт!"