java - 使用默认值初始化数组中的对象 - java

标签 java arrays default-value

有没有办法为要初始化的数组中的对象定义默认值?

与声明基本类型数组时初始化基本类型相同的方式:

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())初始化数组后(实际上只是创建一个对象并用指向它的指针填充数组),或者只是使用循环遍历数组并初始化每个单元格。

谢谢!

编辑:我意识到这不仅与数组相关,而且与声明一般对象并使它们默认为值/自动初始化有关。

最佳答案

Java 8 方式:

MyObject[] arr = Stream.generate(() -> new MyObject())
    .limit(5)
    .toArray(MyObject[]::new);

这将创建一个无限的 Stream供应商 () -> new MyObject() 生成的对象,将流限制为所需的总长度,并将其收集到数组中。

如果您想在对象上设置某些属性或其他内容,您可以有更多参与的供应商:

() -> {
  MyObject result = new MyObject();
  result.setName("foo");
  return result;
}

关于java - 使用默认值初始化数组中的对象 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36312406/

相关文章:

java - FragmentManager.beginTransaction() 不能应用于 (int, android.app.fragment)

java - 构造函数中的变量?

arrays - 如何在 swift 中根据另一个数组位置对一个数组进行排序?

c# - DefaultValue 属性不适用于我的自动属性

constants - MQL4 - 如何在 MQL4 脚本中将 "today"-datetime 设置为外部变量?

java - 无法在java中执行文件IO

java - 无法禁用 hibernate 日志记录

android - 如何使我的数组索引等于android中的位置

java - 我构建了一个似乎不起作用的简单方法

c++ - 最佳实践 C++ : Reuse default arguments for multiple methods