java - 在一行中实例化数组的数组

标签 java arrays initialization declaration

我正在创建一个存储分层数据的 Java 类。它与 XML 非常相似,我会将整个结构保留在 XML 中以便稍后由 Java 解析,但我们希望避免 I/O 开销。

相反,我想将数据硬编码在全局变量的 Java 对象中。 XML 代码如下所示:

<Group name="Order">
   <Milestone name="Tested" value="testedDate"/>
   <Milestone name="Created">
      <Milestone name="Delivered" value="deliveredDate"/>
      <Milestone name="Pressed" value="someString"/>
      <Milestone name="Assembled" value="whatever"/>
   </Milestone>
   <Milestone name="Ordered" value="something"/>
</Group>

所以我创建了带有 setter 和 getter 以及多态构造函数的类。 Group 类有一个构造函数,将名称属性作为字符串输入,将 Milestone 对象数组作为另一个输入:

public Group(String name, Milestone[] milestones) { ...... }

请注意,Milestone 元素可以具有相同类型的子元素。所以我创建了一个具有两个构造函数的 Milestone 类。第一个构造函数处理第一个 Milestone 元素。它仅将名称和值属性作为字符串输入。第二个构造函数将 name 属性作为字符串输入,并将 Milestone 对象数组作为第二个输入。

public Milestone(String name, String value) { .....}
public Milestone(String name, Milestone[] subMilestones) { ...... }

但现在我想做的是在一行代码中实例化所有这些,如下所示:

Group[] groups = {
   new Group("Order",{
      new Milestone("Tested","testedDate"),
      new Milestone("Created",{
         new Milestone("Delivered","deliveredDate"),
         new Milestone("Pressed","someString"),
         new Milestone("Assembled","whatever")})
      new Milestone("Ordered","something")
   }
   new Group("Invoice",...
   ...
   ...
};

它似乎不喜欢那样。简而言之,它不喜欢我在 Group 数组的声明中打开括号来启动"new"Milestone 对象的新数组。有没有一种方法可以在一行代码内完成这一切(例如,在一个末尾带有一个分号的声明中)?

最佳答案

您必须显式实例化子数组,如

Group[] groups = {
   new Group("Order", new Milestone[] {
      new Milestone("Tested","testedDate"),
      new Milestone("Created", new Milestone[] {
         new Milestone("Delivered,"deliveredDate"),
         new Milestone("Pressed,"someString"),
         new Milestone("Assembled,"whatever")}),
      new Milestone("Ordered","something")
   }
   new Group("Invoice",...
   ...
   ...
};

关于java - 在一行中实例化数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24896142/

相关文章:

java - Windows 8 上的 JWrapper EXE 需要 "Run as Administrator..."

java - Common Lisp 中的嵌套循环

mysql - 一个 MySQL 查询可能吗? "column contains any of the array' 的值”

Git 工作流程/部署

c++ - 列表初始化的形式

java - 为什么我得到 java.io.EOFException?

java - HikeriCP : java. sql.SQLException:关闭与显式目录的连接时目录不能为空

arrays - 如果没有该元素则更新

c++ - Cuda 分配和返回数组从 gpu 到 cpu

regex - 尽管检查了 undef,但有关未初始化变量的警告