public abstract class Foo<T extends Foo<T>> // see ColinD's comment{ public T eat(String eatCake) { return (T)this; }}public class CakeEater extends Foo<CakeEater> { public void f(){}}
编辑
要求子类以某种方式表现是没有问题的,这超出了静态类型可以检查的范围。我们一直在这样做-一页又一页的普通英语指定您如何编写子类。
提出的另一种具有协变返回类型的解决方案必须做同样的事情-用简单的英语要求子类实现者返回类型
this。不能通过静态类型指定该要求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)