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

2022-09-02 21:35:37

只是好奇:

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

为什么要定义:

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

而不是

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

?


答案 1

基元数组类型喜欢和不扩展,但它们确实扩展boolean[]double[]Object[]Object

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

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

答案 2

如果它有一个版本,并且每个版本p都是基元,那么它将更加静态类型化。就像类中的许多重载方法一样。Object[]p[]Arrays

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