为什么“System.arraycopy”使用“Object”而不是“Object []”?

时间:2011-06-09 08:15:58

标签: java arrays arraycopy

好奇:

有人知道为什么方法System.arraycopy使用Object作为srcdest的类型?完全可以使用Object[]代替吗?

为什么定义:

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

而不是

arraycopy(Object[] src, int srcPos, Object[] dest, int destPos, int length)

2 个答案:

答案 0 :(得分:20)

boolean[]double[]这样的原始数组类型不会扩展Object[],但会扩展Object

此方法允许您复制任何类型的数组,因此类型为Object。

int[] a =
int[] b =
System.arraycopy(a, 0, b, 0, a.length);

答案 1 :(得分:1)

如果它具有Object[]的版本,并且每个p[],其中p是基元,则会更加静态地输入。就像Arrays类中的众多重载方法一样。

System.arraycopy的作者要么懒惰,要么不喜欢API中的混乱。