[英]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> {
}
其中DocumentA
和DocumentB
是一个接口,的子类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.