【发布时间】:2016-07-18 16:01:18
【问题描述】:
有没有办法为要初始化的数组中的对象定义默认值?
与声明原始类型数组时初始化原始类型的方式相同:
int[] myIntArray = new int[5]; // we now have an array of 5 zeroes
char[] myCharArray = new char[2]; // an array in which all members are "\u0000"
等等
我想声明一个我定义的类型的对象数组,并让它们以类似的方式自动初始化。
我想这意味着我想为数组中的每个索引运行new myObject()(使用默认构造函数)。
我无法在网上找到任何相关的东西,我得到的最接近的是在初始化数组之后使用Arrays.fill(myArray, new MyObject())(实际上只是创建一个对象并用指向它的指针填充数组),或者只是使用循环遍历数组并初始化每个单元格。
谢谢!
编辑:我意识到这不仅与数组有关,而且与一般声明对象并让它们默认为值/自动初始化有关。
【问题讨论】:
-
这种行为在JLS中有很好的定义。
-
没有内置的解决方案,这与 Java 在分配数组时会为您清零的方式不同。一个相当不错的解决方案是:
Stream.generate(() -> new MyObject()).limit(5).toArray(MyObject[]::new) -
你能详细说明这到底是做什么的吗?谢谢!
-
@Cardano 你应该把这个作为答案。
-
@Cardano 使用 Java 8 的功能真是太棒了。
标签: java arrays default-value