在Java中,是否可以定义一个泛型方法来将超类型作为参数?

Bob*_*obo 1 java generics

我想实现这样的事情:定义一个抽象方法

public abstract void registerError(*any subclass of an ErrorVO or ErrorVO e);
Run Code Online (Sandbox Code Playgroud)

并在实际实现方法的子类中:

public void registerError(ASubclassOfErrorVO e);
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助!

Gar*_*all 5

您可以在类的声明中使用泛型,如下所示:

static abstract class Parent<T extends ErrorVO> {
    public abstract void registerError(T e);
}

static class Child extends Parent<ASubclassOfErrorVO> {
    @Override
    public void registerError(ASubclassOfErrorVO e) {
    }
}
Run Code Online (Sandbox Code Playgroud)

所述<T extends errorVO>在一个定义T为类延伸errorVO.这不能仅仅使用方法声明的原因是你可以在子类中有许多方法可能会覆盖父方法,只需T在类级别声明类型,编译器是否知道哪个方法被覆盖.