我有一个界面:
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
。
(原谅抽象方法中的琐碎实现。这是一个简化的案例,用于在线共享)。
我无法让它发挥作用。
它在我的抽象类中说“该方法不会覆盖其超类中的方法”。
是的确如此!
为什么这不起作用的理论是什么?
我的目标是在我的抽象类中有一个共同的抽象实现,并使用我的子类来提供正确的类型。
答案 0 :(得分:9)
您似乎正在使用Validator
的原始类型。
public abstract class SharedValidator<T extends Document> implements Validator
应改为:
public abstract class SharedValidator<T extends Document> implements Validator<T>