0

重複の可能性:
実装とコレクション

私のスーパークラスは試験です。私のサブクラスの1つは分析です。

これは私のIDE内で有効です

Exam object = new Analytical();

しかし、これはそうではありません。

ArrayList<Exam> object = new ArrayList<Analytical>();

エラーは新規からステートメントの最後までで、「オブジェクトのタイプをArrayListに変更します。したがって、このデータ構造で多態性を適切に利用するにはどうすればよいかという質問です。ありがとうございます。

4

3 に答える 3

1

ジェネリック型宣言の両側に異なるパラメーター化された型を含めることはできません。

したがって、両側で同じタイプを使用する必要があります。

そのはず: -

ArrayList<? extends Exam> object = new ArrayList<Analytical>();

また

ArrayList<Exam> object = new ArrayList<Exam>();

また

ArrayList<? extends Exam> object = new ArrayList<Exam>();

ポリモーフィズムは、パラメーター化された型には適用されません。

于 2012-10-01T17:43:11.193 に答える
0

次のように変更する必要があります。

ArrayList<? extends Exam> object = new ArrayList<Exam>();

ジェネリックスの継承は、私たちの通常の理解と少し異なります。

于 2012-10-01T17:42:28.760 に答える
0

Collections間ではなく時間中にのみチェックされるため、この対策が講じられているため、誤って間違ったタイプがコレクションに入ることはありません...CompilationRuntime

ArrayList<? extends Exam> object = new ArrayList<Analytical>();

また

ArrayList<? extends Exam> object = new ArrayList<Exam>();

于 2012-10-01T17:55:35.353 に答える