为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容森 2023-03-02 10:17:46
这个语法是做什么的,用方括号括住数字?new Integer[0];我在我维护的代码库中找到了它,但我找不到关于它的任何文档。它是这样使用的:Set<Form> forms = getForms(); List<Form> formsList = Arrays.asList(forms.toArray(new Form[0]))
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

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

为什么要这么做?

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

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

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

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

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


查看完整回答
反对 回复 2023-03-02
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

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

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


查看完整回答
反对 回复 2023-03-02
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信