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,呃
这将有效:
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称为协变返回类型.