まず、javaは厳密な型システムを持っているので、プログラムはコンパイル時に型の正しさがチェックされ、プログラムのバイトコードは実行前にバイトコードベリファイアにロードされます。Javaにおけるジェネリックスとサブタイプの問題
ジェネリック医薬品の導入は、Javaの型システムのpotencialsを広げていますが、原因のjavaに多くの問題は、上記の例では、このような発生のサブタイプがありますが:私たちは、Stringクラスであることを使用して上記の例では
String [] a ={"Hello"};
Object [] b= a;
b[0]= false;
String s=a[0];
System.out.println(s);
Objectのサブクラスです。 私の質問は、上記のプログラムに関する警告がコンパイラによって生成されない理由です。実行すると(もちろん)例外がスローされます。 また、上記のプログラムがJava実装で持つことができる問題/結果(私には明らかな問題がありますか?)。
まずBrachaのGenerics tutorialを読んでください。 –
質問自体については、それはダップです:http://stackoverflow.com/questions/18666710/why-are-arrays-covariant-but-generics-are-invariant –
もしあなたが高レベルのアーチ討論、プログラマー.seはこの種の質問にもっと適しているようです。 –