Почему «System.arraycopy» использует «Object» вместо «Object []»? - PullRequest
18 голосов
/ 09 июня 2011

Просто любопытно:

Кто-то знает, почему метод 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)

Ответы [ 2 ]

20 голосов
/ 09 июня 2011

Примитивные типы массивов, такие как boolean[] и double[], не расширяются Object[], но расширяются Object

Этот метод позволяет копировать любой тип массива, поэтому типом является Object.

int[] a =
int[] b =
System.arraycopy(a, 0, b, 0, a.length);
1 голос
/ 09 июня 2011

Было бы более статически типизировано, если бы у него была версия для Object[] и для каждого p[], где p - примитив. Как и многочисленные методы перегрузки в Arrays классе.

Автор System.arraycopy либо ленив, либо не любит беспорядок в API.

...