java - new ClassName[0] 有什么作用?(Java 8)
问题描述
这个语法有什么作用,数字周围有方括号?
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。假设这form
是Collection
他们在这里的一些子类型。
该toArray
方法的目的是将目标集合(例如 your form
)的元素复制到数组中:
如果参数数组足够大以容纳所有元素,则将它们复制到该数组中。结果将是参数数组。
如果参数数组太小,则分配一个新数组,其类型与参数数组相同,长度(刚好)足以容纳元素。然后将元素复制到新数组中,并将其作为结果返回。
所以代码实际上在做的是将 的元素复制form
到Integer[]
正确大小的 a ,然后包装数组以给出 a (fixed sized) List<Integer>
。然后可以将其传递给其他代码,而不必担心该代码可能会更改原始form
集合。
推荐阅读
- ionic4 - Ionic 4 迁移:IonicModule 更改
- javascript - setTimeout() 跳转到数组的最后一个元素我该如何防止这种情况?
- mysql - 我需要在下面的 sql 查询中使用什么类型的连接来检索正确的结果?
- node.js - 服务器端渲染和生成缓存的 index.html(Vuejs、Nodejs)
- javascript - 从 ftp 运行时“THREE.GLTFLoader: Unable to parse model”
- sql - SQL - 在单个记录中分组和汇总
- django - 无法在 VueJs 中从 Django API 渲染图像
- javascript - 方法不等待异步 REST 调用
- c# - 为什么 C# 列表由带符号的 int 索引
- django-rest-framework - 如何在服务器启动时激活虚拟环境并运行 celery 命令来激活 djcelery?