0

ClassAアイテムを返すいくつかのメソッドを持つクラスがあります。

class ClassA {
    ClassA item(...) {...}
    Vector<ClassA> list(...) {...}
}

これらのメソッドは入力を処理し、その場でこれらの種類のアイテムを生成します。このクラスを拡張するとします。

class ClassB extends ClassA {
    ...
}

どのような場合でも item() または list() メソッドをオーバーライドしませんがClassB、戻り時にキャストせずにアイテム (またはベクトル) を返すようにしたいと思います (これが現在の私の現在の解決策です)。そうする方法はありますか?前もって感謝します。

4

1 に答える 1

3

ClassA または ClassB アイテムを保持する 3 番目のクラス (ClassC) を作成します。これは、次のようなジェネリック型でパラメーター化されます。

class ClassC<T extends ClassA> {
    T item(...) {...}
    Vector<T> list(...) {...}
}

ClassA または ClassB のいずれかの型で ClassC をインスタンス化できるようになり、クラスのキャストについて心配する必要がなくなりました。

于 2012-04-22T11:34:36.853 に答える