使用泛型作为方法参数Java

时间:2020-02-09 12:11:58

标签: java generics interface overriding abstract-class

我有一个界面:

    public interface DDLOperation <T extends Artifact> {

    public void alter(T artifact);

    public void create(T artifact);

    public void drop(T artifact);

} 

我还有一个实现该接口的抽象类:

    public abstract class AbstractDDLOperation <T extends Artifact> implements DDLOperation {

    @Override
    public abstract void alter(T artifact);

    @Override
    public abstract void create(T artifact);

    @Override
    public abstract void drop(T artifact);

    public void processChildElement(Element childElement) {
        Artifact artifact = createArtifact(childElement);
        alter(artifact);
    }
}

Eclipse在AbstractDDLOperation类中给出了此错误: AbstractDDLOperation类型的方法alter(T)必须重写或实现超类型方法

我希望所有实现AbstractDDLOperation的子类都传递不同类型的参数,它们都从Artifact类扩展到了alter,create和drop方法。

任何人都可以对这个问题提出建议吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您的类应实现=> v = "foobar".chars.join('.') => v => "f.o.o.b.a.r" ,而不是原始的DDLOperation<T>

应该是:

DDLOperation

否则,您的抽象类的方法不会覆盖或实现任何超级类型(接口)方法,因此public abstract class AbstractDDLOperation <T extends Artifact> implements DDLOperation<T> 批注不正确。

相关问题