gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:34:59 26 4
gpt4 key购买 nike

这个语法有什么用,数字两边用方括号括起来?

new Integer[0];

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

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

最佳答案

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

你为什么要这么做?

请查看 form.toArray(T[]) 的 javadocs方法。假设formCollection 的某个子类型他们是here

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

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

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

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

关于java - new ClassName[0] 的作用是什么? (Java 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56836985/

26 4 0