1

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

public abstract void registerError(*any subclass of an ErrorVO or ErrorVO e);

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

public void registerError(ASubclassOfErrorVO e);

非常感谢你的帮助!

4

2 回答 2

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) {
    }
}

<T extends errorVO>a 中定义T为扩展的类errorVO。这不适用于方法声明的原因是,子类中可能有许多可能覆盖父方法的方法,只有通过T在类级别声明类型,编译器才能知道哪个方法被覆盖。

于 2012-07-05T13:49:18.367 回答
1
public abstract class A <T extends ErrorVO> {
    public abstract void register(T e);
}

public class B extends A<SubclassOfErrorVO> {
    @Override
    public void register(SubclassOfErrorVOe e) {
    }
}
于 2012-07-05T13:56:23.690 回答