初始化自定义类的数组

时间:2017-04-24 06:29:14

标签: java arrays object

我想初始化一个对象数组(人为的例子)

class StringPair {
    String a;
    String b;
    // constructor
}

StringPair p[] = {
    { "a", "b" },
    { "c", "d" }
};

但javac对java: illegal initializer for StringPair

的定义抱怨p

我该怎么写呢?

7 个答案:

答案 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");
    }}
};