在Java中是否可以在抽象类的方法内使用this
,但可以将其作为手头子类的实例,而不仅是抽象类?
abstract class MyAbstractClass <MyImplementingClass extends MyAbstractClass> {
public abstract MyImplementingClass self();
}
我在每个子类中覆盖了
class MyImplementingClass extends MyAbstractClass<MyImplementingClass> {
@Override public MyImplementingClass self() {
return this;
}
}
但我想知道是否还有更优雅的方法可以做到这一点。特别是,一个不需要每个子类覆盖
self()
这样的例程的例程。 最佳答案
我认为这里的问题是您的self()
方法返回MyImplementingClass
而不是MyAbstractClass
。
您应该返回一个MyAbstractClass
,返回的对象的动态类型将是相关的。
我也不理解为什么您不只使用this
?无论对象在何处调用,它都会以正确的动态类型返回对象本身。如果需要,可以投射它