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

时间:2019-07-01 13:57:30

标签: java

此语法在数字的方括号内做什么?

new Integer[0];

我已经在维护的代码库中找到它,但是找不到任何文档。它的用法如下:

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

2 个答案:

答案 0 :(得分:1)

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

您为什么要这么做?

再来看一下form.toArray(T[])方法的javadocs。假设formCollection的某种子类型,它们就是here

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

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

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

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

答案 1 :(得分:0)

与存储诸如字符串,整数,布尔值等值的传统数组不同。对象数组存储对象。数组元素存储对象的引用变量的位置

语法: Class obj [] = new Class [array_length]