繁体   English   中英

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

[英]Shared abstract implementation of a generic interface method: “The method does not override method from its superclass”

我有一个界面:

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

(请原谅抽象方法中的琐碎实现。这是出于在线共享目的的简化案例)。

我无法使它正常工作。

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

是的,它确实!

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

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

看起来您正在为Validator使用原始类型。

public abstract class SharedValidator<T extends Document> implements Validator

应更改为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM