用于实例化初始化集合的紧凑语法

2022-09-01 13:50:00

我正在寻找一种紧凑的语法来实例化集合并向其添加一些项。我目前使用以下语法:

Collection<String> collection = 
    new ArrayList<String>(Arrays.asList(new String[] { "1", "2", "3" }));

我似乎记得有一种更紧凑的方法可以做到这一点,它使用匿名子类,然后将项添加到子类的构造函数中。但是,我似乎不记得确切的语法。ArrayList


答案 1

答案 2

我猜你正在考虑

collection = new ArrayList<String>() { // anonymous subclass
     { // anonymous initializer
         add("1");
         add("2");
         add("3");
     }
}

一个昏迷,给

collection = new ArrayList<String>() {{ add("1"); add("2"); add("3"); }}

至少可以说,很模糊。但是,Arrays.asList 方法有一个变体:Arrays.asList(T...a)提供可压缩性和可读性。例如,它给出了以下代码行:

collection = new ArrayList<String>(Arrays.asList("1", "2", "3")); // yep, this one is the shorter

请注意,您不会创建可疑用途的ArrayList的匿名子类。