首页 > 解决方案 > new ClassName[0] 有什么作用?(Java 8)

问题描述

这个语法有什么作用,数字周围有方括号?

new Integer[0];

我在我正在维护的代码库中找到了它,但我找不到任何文档。它是这样使用的:

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

标签: java

解决方案


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

为什么要这么做?

好吧,请查看该form.toArray(T[])方法的 javadocs。假设这formCollection他们在这里的一些子类型。

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

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

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

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


推荐阅读