我想初始化一个对象数组(人为的例子)
class StringPair {
String a;
String b;
// constructor
}
StringPair p[] = {
{ "a", "b" },
{ "c", "d" }
};
但javac对java: illegal initializer for StringPair
p
我该怎么写呢?
答案 0 :(得分:6)
你应该调用构造函数:
StringPair[] p = { new StringPair ("a", "b"), new StringPair ("c", "d") };
答案 1 :(得分:2)
在{}中使用new
运算符。
async_work_group_copy.
StringPair p[] = {
new StringPair("a", "b"),
new StringPair("c", "d")
};
答案 2 :(得分:1)
如果您无法使用params创建构造函数,则可以使用双括号初始化:
StringPair p[] = {
new StringPair(){{
setA("a");
setB("b");
}},
new StringPair(){{
setA("c");
setB("d");
}}
};
这似乎是你正在寻找的东西。
答案 3 :(得分:0)
列表初始化(名称取自C ++)不是一种有效的java方式来初始化数组:
StringPair p[] = {
{ "a", "b" },
{ "c", "d" }
};
改为使用你的类的构造函数:
StringPair p[] = { new StringPair("a", "b"), new StringPair("1", "g") };
答案 4 :(得分:0)
你需要传递StringPair的对象
如下面的代码
StringPair p[] = { new StringPair ("a", "b"), new StringPair ("c", "d") };
答案 5 :(得分:0)
你应该像这样创建一个构造函数
class StringPair {
String a;
String b;
Public StringPair(string a, string b)
{
this.a=a;
this.b=b;
}
}
然后你可以像这样初始化它
StringPair p[] = { new StringPair("a", "b"), new StringPair("c", "d") };
答案 6 :(得分:0)
我不知道为什么这么多人继续发布相同的解决方案。
就我而言,我需要初始化一个对象数组。但是,这些对象是从XSD生成的,因此无法添加自定义构造函数。为此,我们需要带有部分类的C#。
上面的保罗给了我解决问题的提示,但是他的解决方案没有编译。这是一个做的事:
StringPair p[] = new StringPair[] {
new StringPair(){{
setA("a");
setB("b");
}},
new StringPair(){{
setA("c");
setB("d");
}}
};