我想调用在父类中定义的返回“this”的方法,但是我希望它们的返回Type是子类型,而不是父类型。
目前我正在使用这种丑陋的,本身容易出错的技术,只有通过ClassCast Exceptions才能看到错误......
abstract class AbstractClass<T extends AbstractClass<?>>{
public T doSomething(){
return (T)this;
}
}
class Implementation extends AbstractClass<Implementation>{
}
// usage
Implementation impl = new Implementation().doSomething().doSomething();
有没有更聪明的方法呢?
与在每个子类中实现具体的返回类型相比,我的方式(转换为泛型类型)是否会降低性能?