Что делает новое ClassName [0]? (Java 8) - PullRequest
1 голос
/ 01 июля 2019

Что делает этот синтаксис с квадратными скобками вокруг числа?

new Integer[0];

Я нашел его в кодовой базе, которую я поддерживаю, но не могу найти никакой документации по нему. Используется так:

Set<Form> forms = getForms();
List<Form> formsList = Arrays.asList(forms.toArray(new Form[0]))

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Распределяет массив с нулевой длиной; например new Integer[0] создает массив нулевой длины из Integer объектов.

Зачем вы это делаете?

Хорошо, посмотрите на javadocs для метода form.toArray(T[]). Предполагая, что form является некоторым подтипом Collection, они здесь .

Цель метода toArray - скопировать элементы целевой коллекции (например, form) в массив:

  • Если массив аргументов достаточно велик для размещения всех элементов, они копируются в этот массив. Результатом будет массив аргументов.

  • Если массив аргументов слишком мал, выделяется новый массив с тем же типом, что и массив аргументов , и с длиной, которая (просто) достаточна для хранения элементов. Затем элементы копируются в новый массив, и он возвращается как результат.

Итак, код фактически копирует элементы form в Integer[] правильного размера, а затем оборачивает массив, чтобы получить (фиксированный размер) List<Integer>. Затем его можно передать в другой код, не беспокоясь о том, что этот код может изменить исходную коллекцию form.

0 голосов
/ 01 июля 2019

В отличие от традиционного массива, в котором хранятся такие значения, как string, integer, Boolean и т. Д., Массив объектов хранит объекты. Элементы массива хранят расположение ссылочных переменных объекта

Синтаксис: Class obj [] = новый класс [array_length]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...