将对象数组转换为通用数组

Mychaint

目前,我正在查看java.util.ArrayList的源代码。现在,我发现函数public void sureCapacity(int minCapacity)将对象数组强制转换为通用数组,就像下面的代码一样:

 E[] newData = (E[]) new Object[Math.max(current * 2, minCapacity)];

但是,当我将数组声明为特定类型时,IDE将显示错误。

Object[] arr = new Object[10];
    int[] arr1 = (int[]) new Object[arr.length];

谁能告诉我它们之间的区别?非常感谢。

康斯坦丁·约夫科夫(Konstantin Yovkov)

这是因为E(在的源代码中ArrayList)代表某种引用类型,而不代表某种原始类型。

这就是为什么在尝试将Object实例数组转换为基元数组时会出现编译时错误的原因

如果您这样做(例如)

Object[] arr = new Object[10];
Integer[] arr1 = (Integer[]) new Object[arr.length];

错误将消失。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章