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>定義されます。これがメソッド宣言だけでは機能しない理由は、親のメソッドをオーバーライドする可能性のある多くのメソッドをサブクラスに含めることができるためです。クラス レベルで型を宣言することによってのみ、コンパイラはどのメソッドがオーバーライドされているかを認識します。TerrorVOT

于 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 に答える