我有以下几点。如果保留@Override,则会收到错误消息,指出该方法必须实现或重写超类型方法。如果删除它,则会收到一个错误,指出子类必须实现继承的抽象方法。为什么下面的代码不起作用,如何使其达到预期目的?
BaseClass.java:
public abstract class BaseClass
{
...
protected abstract <T extends Inputs> T doStuff(T inputs);
public abstract static class Inputs
{
...
}
}
ChildClass.java:
public class ChildClass extends BaseClass
{
...
@Override
protected Inputs doStuff(Inputs inputs)
{
return inputs;
}
public static class Inputs extends BaseClass.Inputs
{
...
}
}
尝试并:
public abstract class BaseClass<T extends BaseClass.Inputs>
和:
public class ChildClass extends BaseClass<ChildClass.Inputs>
这意味着您需要进行更改doStuff()
,以使其返回T(在中BaseClass
),而无需声明类型变量:
public abstract T doStuff(T inputs);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句