我正在创建一个存储分层数据的 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/