如何在一行中初始化静态ArrayList <myclass>

Ngo*_* Ky 25 java

我有MyClass

MyClass(String, String, int);
Run Code Online (Sandbox Code Playgroud)

我知道如何以这种方式添加到ArrayList:

MyClass.name = "Name";
MyClass.address = "adress";adress
MyClass.age = age;
Run Code Online (Sandbox Code Playgroud)

然后添加到arrayList,如:

list.add(MyClass);
Run Code Online (Sandbox Code Playgroud)

但现在我有很多以静态形式存在的对象MyClass,我想添加

ArrayList<MyClass> list = new ArrayList<MyClass>({"Name","Address", age};.....);
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗 谢谢,无论如何

Roh*_*ain 41

你可以使用双括号初始化: -

List<MyClass> list = new ArrayList<MyClass>() {
    {
        add(new MyClass("name", "address", 23));
        add(new MyClass("name2", "address2", 45));
    }
};
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,inner braces就像一个initializer块,它用于list一次性初始化..

还要注意你的结尾处的分号 double-braces


Pet*_*rey 23

你可以做

List<MyClass> list = Arrays.asList(
                         new MyClass("Name", "Address", age),
                         // many more
                     );
Run Code Online (Sandbox Code Playgroud)

注意:这将创建一个无法更改其大小的列表.


Dan*_* D. 8

像这样的东西:

List<MyClass> list = new ArrayList<MyClass>(Arrays.asList(new MyClass[] {new MyClass("Name", "Address", age}));
Run Code Online (Sandbox Code Playgroud)

当然,你的类必须有这样的构造函数:

public MyClass(String name, String address, int age) {
...
}
Run Code Online (Sandbox Code Playgroud)