【发布时间】:2014-09-05 20:03:47
【问题描述】:
查看代码
Integer[] array = (Integer[]) new Object[size];
这显然行不通,我完全理解。
但为什么使用泛型有效?
T[] array = (T[]) new Object[size];
如果 T 是 Integer 类,则在该行之后数组将是 Object[] 类型,但为什么可以进行强制转换?不抛出 ClassCastException?
【问题讨论】:
-
根据经验,泛型和数组不能很好地混合。
-
避免泛型和数组。避免强制转换数组。这是语言中有些不安全的领域——在运行时很容易得到
ArrayStoreException。