通用接口方法的共享抽象实现:“该方法不会覆盖其超类中的方法”

时间:2018-05-24 16:33:40

标签: java

我有一个界面:

public interface Validator<T extends Document>
{
    boolean isValid( T  document ) throws DocumentValidationException;
}

我有一个实现这个abstact方法的抽象类:

    public abstract class SharedValidator<T extends Document> implements Validator
{
    @Override
    public boolean isValid( final T document ) throws DocumentValidationException
    {
        if ( null == document )
        {
            return false;
        }
        else
        {
            return true;
        }
    }

最后,我有两个扩展抽象类的子类:

public class ValidatorA extends SharedValidator<DocumentA>  {
}

public class ValidatorB extends SharedValidator<DocumentB>  {
}

其中DocumentADocumentB是接口的子类Document

(原谅抽象方法中的琐碎实现。这是一个简化的案例,用于在线共享)。

我无法让它发挥作用。

它在我的抽象类中说“该方法不会覆盖其超类中的方法”。

是的确如此!

为什么这不起作用的理论是什么?

我的目标是在我的抽象类中有一个共同的抽象实现,并使用我的子类来提供正确的类型。

1 个答案:

答案 0 :(得分:9)

您似乎正在使用Validator的原始类型。

public abstract class SharedValidator<T extends Document> implements Validator

应改为:

public abstract class SharedValidator<T extends Document> implements Validator<T>