Скажем, у нас есть переменная типа IntFunction
, которая возвращает целочисленный массив:
IntFunction<int[]> i;
С помощью дженериков Java 8 можно инициализировать эту переменную ссылкой на конструктор следующим образом:
i = int[]::new
Как компилятор Java переводит это в байт-код?
Я знаю, что для других типов, таких как String::new
, он может использовать инструкцию invokedynamic
, которая указывает на конструктор String java/lang/String.<init>(...)
, который является всего лишь методом со специальным значением.
Как это работает с массивами, видя, что существуют специальные инструкции для построения массивов?