为什么 Java 允许类型不安全的数组赋值?
通常,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>
我被允许声明它,但我只能添加 类型的对象。null
为什么Java不阻止这种被篡改的数组的声明呢?