这个有效:
Object[] array = new Object[3];
array[0] = "ddd";
array[1] = new Integer(12);
这不会:(在新整数处崩溃)
Object[] array2 = new String[3];
array2[0] = "ddd";
array2[1] = new Integer(12);
我读过 covariance但仍然无法理解第二个代码示例被禁止的潜在技术原因,或者为什么抛出 ArrayStoreException。 对象引用数组和字符串引用数组之间的本质区别是什么?
我知道在第二个例子中,数组被实例化是为了向它添加字符串,但仍然有一些不符合逻辑的点击。有人可以用简单的术语解释一下吗?
最佳答案
Object
引用文献可以包含任何类型的 Object
, 而 String
引用文献只能包含 String
s——JVM 将在运行时检查它。真的没有比这更多的了。
您的第二个示例实际上指出了 Java 语言设计中的一个缺陷。这个异常可以在运行时发生,这显然是不好的!泛型特性的设计略有不同,因此泛型集合不会出现同样的问题。 String[]
是一个Object[]
, 遗憾的是;但是一个List<String>
不是 List<Object>
关于java - 对象数组和字符串数组有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8400281/