new ClassName[0] 的作用是什么?(Java 8)

Sah*_*and 5 java

这个用方括号将数字括起来的语法有什么作用?

new Integer[0];
Run Code Online (Sandbox Code Playgroud)

我在我维护的代码库中找到了它,但找不到任何相关文档。它的使用方式如下:

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

Ste*_*n C 4

它分配一个长度为零的数组;例如new Integer[0]创建一个零长度的Integer对象数组。

为什么要这么做?

请查看该form.toArray(T[])方法的 javadocs。假设这是他们在这里form的某种亚型。Collection

该方法的目的toArray是将目标集合(例如您的)的元素复制form到数组中:

  • 如果参数数组足够大以容纳所有元素,它们将被复制到该数组中。结果将是参数数组。

  • 如果参数数组太小,则会分配一个新数组,其类型与参数数组相同,且长度(刚好)足以容纳元素。然后将元素复制到新数组中,并将其作为结果返回。

所以代码实际上所做的是将 的元素复制form到正确大小的 an Integer[],然后包装数组以给出 a (fixed sized) List<Integer>。然后可以将其传递给其他代码,而不必担心该代码可能会更改原始form集合。


归档时间:

查看次数:

860 次

最近记录:

6 年,11 月 前