Почему "System.arraycopy" использует "Object" вместо "Object []"?
Просто любопытно:
Кто-нибудь знает, почему метод System.arraycopy
использует Object
как тип для src
и dest
? Можно ли использовать Object[]
вместо этого?
Зачем определять:
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
Он был бы более статически типизирован, если он имеет версию для Object[]
и каждый p[]
, где p - примитив. Как и многочисленные методы перегрузки в классе Arrays
.
Автор System.arraycopy
либо ленился, либо не любил беспорядок в API.