は、次の簡単なコードを考えてみましょうことができます:Javaのジェネリック - 無制限のワイルドカードは、異なる種類の混合物(警告なし)
List <?> list4[] = { Arrays.asList("1","2"), Arrays.asList(1,2)};
を私は無制限のワイルドカードがreifiableタイプであることを理解します。したがって、私は上記の問題が何の問題もなく(なぜなら、未確認の警告なしで)なぜ動作するのか理解しています。
しかし、注意深く見ると、上記のコードで問題が発生します。
アレイにList <string>
とList <Integer>
が混在しています。上記のような特殊な状況には、未確認の警告はありませんか?
List <String> x = list4[0];
List <String> y = list4[1]; <-- problem right?
私は、これはばかげ例である知っているが、それは一般的なコンテナ内のタイプの混合物がある場合、問題が発生した一例に過ぎません。
例もコンパイルしないことが、そのようにそれは問題ではありません。 'y'が導入する論理的な問題については忘れてください。 'x 'の割り当てさえ無効です。 – erickson
@erickson ok。私は今あなたのポイントを見ます。私は光を見ます。 Thx – yapkm01
これらの割り当てが機能するようにするには、 'List'へのキャストが必要です。これは安全ではないので警告(どちらの割り当ても)を行います。しかし、私は各要素を 'List >'に割り当て、リストの要素を 'Object'として読むことができます。これは便利なことかもしれませんが、混合配列の作成に関する警告は表示されません。 –
erickson