Java泛型 - 覆盖抽象方法并具有子类的返回类型

Num*_*ron 15 java generics types return-value

我正在尝试创建一个设置,其中一组子类覆盖超类.这个超类包含一个抽象方法 - 理想情况下,它的返回类型是调用此方法的对象的返回类型,因此它的行为如下:

public abstract class SuperClass{
  public abstract SuperClass getSelf();
}

public class SubClass extends SuperClass{
  @Override
  public SubClass getSelf(){
    return this;
  }
}
Run Code Online (Sandbox Code Playgroud)

我不确定这样的事情是否可能,因为我认为返回类型总是必须相同才能使覆盖工作 - 但是我一直在想答案,如果存在的话,就在这条线的某个地方......

public abstract class SuperClass{
  public abstract <? extends SuperClass> getSelf();
}

public class SubClass extends SuperClass{
  @Override
  public SubClass getSelf(){
    return this;
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

编辑:添加扩展SuperClass到SubClass,呃

Rob*_*rop 9

这将有效:

public abstract class SuperClass{
  public abstract SuperClass getSelf();
}

public class SubClass extends SuperClass{
  @Override
  public SubClass getSelf(){
    return this;
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意我已添加extends SuperClass到您的SubClass定义中.返回类型getSelf称为协变返回类型.