Java 实例化一行中的数组

Java 实例化一行中的数组,java,arrays,initialization,declaration,Java,Arrays,Initialization,Declaration,我正在创建一个存储分层数据的Java类。它与XML非常相似,我将保留XML中的整个结构,以便稍后由Java解析,但我们希望避免I/O开销 相反,我希望将Java对象中硬编码的数据保存在全局变量中。XML代码如下所示: <Group name="Order"> <Milestone name="Tested" value="testedDate"/> <Milestone name="Created"> <Milestone nam

我正在创建一个存储分层数据的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>
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",...
   ...
   ...
};
注意,里程碑元素可以有相同类型的子元素。因此,我创建了一个具有两个构造函数的里程碑类。第一个构造函数处理第一个里程碑元素。它只接受名称和值属性作为字符串输入。第二个构造函数将name属性作为字符串输入,并将里程碑对象数组作为第二个输入

public Milestone(String name, String value) { .....}
public Milestone(String name, Milestone[] subMilestones) { ...... }
但现在我要做的是在一行代码中实例化所有这些,如下所示:

<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>
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[] 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",...
   ...
   ...
};

必须显式实例化子数组,如中所示

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",...
   ...
   ...
};

必须显式实例化子数组,如中所示

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",...
   ...
   ...
};

必须显式实例化子数组,如中所示

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",...
   ...
   ...
};

从变量声明

Group[] groups = ...
编译器只知道
对象的数组。它不知道内部结构。尽管如此,此内部结构可以在单个语句中构建,但您必须声明它:

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",...
   ...
   ...
};

从变量声明

Group[] groups = ...
编译器只知道
对象的数组。它不知道内部结构。尽管如此,此内部结构可以在单个语句中构建,但您必须声明它:

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",...
   ...
   ...
};

从变量声明

Group[] groups = ...
编译器只知道
对象的数组。它不知道内部结构。尽管如此,此内部结构可以在单个语句中构建,但您必须声明它:

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",...
   ...
   ...
};

从变量声明

Group[] groups = ...
编译器只知道
对象的数组。它不知道内部结构。尽管如此,此内部结构可以在单个语句中构建,但您必须声明它:

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",...
   ...
   ...
};

你可能忘了添加
),
@Braj我只是从原始问题中复制了几行。为了让机修工知道这已经足够了。其余部分隐藏在“…”:-)你可能忘了添加
),
@Braj我只是从原始问题中复制了几行。为了让机修工知道这已经足够了。其余部分隐藏在“…”:-)你可能忘了添加
),
@Braj我只是从原始问题中复制了几行。为了让机修工知道这已经足够了。其余部分隐藏在“…”:-)你可能忘了添加
),
@Braj我只是从原始问题中复制了几行。为了让机修工知道这已经足够了。其余部分隐藏在“…”:-)@谢谢,编译器给了我一些奇怪的信息,我真的无法解释问题是什么。我试过这样做,但Eclipse由于其他错误而无法正确更改文本的颜色。@Braj谢谢,编译器给了我一些奇怪的消息,我无法真正理解问题所在。我试过这样做,但Eclipse由于其他错误而无法正确更改文本的颜色。@Braj谢谢,编译器给了我一些奇怪的消息,我无法真正理解问题所在。我试过这样做,但Eclipse由于其他错误而无法正确更改文本的颜色。@Braj谢谢,编译器给了我一些奇怪的消息,我无法真正理解问题所在。我尝试过这样做,但是Eclipse由于其他错误而无法正确更改文本的颜色。