使用泛型作为方法参数 Java



我有一个接口:

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 类扩展到方法更改、创建和删除。

任何人都可以就此问题提出建议吗?

谢谢。

你的类应该实现DDLOperation<T>,而不是原始DDLOperation

它应该是:

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

否则,抽象类的方法不会重写或实现任何超类型(接口(方法,因此@Override注释不正确。

最新更新