1 минут чтения
25 Sep

Есть такая штука, которая позволяет использовать метод перемещения, когда мы не знаем, какие параметры нужно передать:

 Метод void (объект params [] arr)

Но есть некоторые особенности, которые необходимо учитывать:

1. По-умолчанию такой вызов создаёт новый массив (т.е. триггерит GC, что плохо):

 void Method1 (объект параметров [] arr)
void Method2 (объект [] обр)

вар arr = новый int[10];
Метод1(обр); // будет создан массив object[1] и к первому элементу будет применен массив arr
Метод2(обр); // будет ошибка компиляции, т.к. объект[] не соотвествует типу int[]

2. Если мы передадим тип массива, то это не будет создавать новый массив:

 void Method1 (параметры int [] arr)
недействительный метод2 (int [] обр)

вар arr = новый int[10];
Метод1(обр);
Метод2(обр);
// Эти 2 вызова ответственных

3. Любой вызов будет создать новый массив:

 Метод void (params int[] arr)

Метод(1, 2, 3)
Метод(1)

Вывод: избегайте методов с параметрами, особенно если это горячая часть.

Комментарии
* Адрес электронной почты не будет отображаться на сайте.