Java ジェネリックスと共分散: 制限事項を理解する
ジェネリックスの共分散とは、サブタイプを違反することなくスーパータイプに置き換えることができる機能を指します。タイプセーフティ。ただし、Java では、ジェネリックは共変ではありません。つまり、サブタイプをスーパータイプ変数に割り当てることができません。
この概念を説明するために、次のコード スニペットを考えてみましょう。
List<Integer> li = new ArrayList<Integer>(); List<Number> ln = li; // illegal ln.add(new Float(3.1415));
ここで、ln はli のエイリアス。これは、ln が li と同じリストを参照することを意味します。ただし、ln は List
共分散が許可される場合、上記のコードは正当ですが、タイプ セーフに違反します。 List
したがって、型の安全性を維持するために、Java ジェネリックは共変ではありません。この制限により、ジェネリック コンテキストではサブタイプをスーパータイプと互換的に使用できなくなり、潜在的な型エラーが防止されます。
以上がJava ジェネリックが共変ではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。