我有以下内容。如果我保留@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
{
...
}
}
答案 0 :(得分:3)
尝试并:
public abstract class BaseClass<T extends BaseClass.Inputs>
和
public class ChildClass extends BaseClass<ChildClass.Inputs>
这意味着你需要更改doStuff()
以便它返回T(在BaseClass
中),而不需要声明的类型变量:
public abstract T doStuff(T inputs);