在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?无论对象在何处调用,它都会以正确的动态类型返回对象本身。如果需要,可以投射它

10-01 09:08