一般に、Java は型安全な言語と見なすことができます。ジェネリックにはいくつかの欠陥があることは知っていますが、最近、これまでにない問題に遭遇しました。それを分解するには:
Object[] objects = new Integer[10];
objects[0] = "Hello World";
期待どおりにコンパイル時エラーが発生することはありません。Array of の宣言は、Object
他の何かの配列を指すことを許可しないと思います。ジェネリックでは、次のような奇妙なことは許可されていません。
ArrayList<Object> objs = new ArrayList<Integer>
そして、Javaをだまして何かをさせようとすると
ArrayList<? extends Object> objects = new ArrayList<Integer>
宣言することはできますが、 type のオブジェクトしか追加できませんnull
。
Java がそのような奇妙な配列の宣言を防がないのはなぜですか?