双括号初始化{{ ... }}是Java中初始化集合对象的另一种方法。它提供了用于初始化集合对象的简单语法。
package org.nhooo.example.lang; import java.util.ArrayList; import java.util.List; public class DoubleBraceInitialization { public static void main(String[] args) { // 创建颜色列表并添加三种颜色 // 红色,绿色和蓝色。 List<String> colors1 = new ArrayList<>(); colors1.add("Red"); colors1.add("Green"); colors1.add("Blue"); for (String color : colors1) { System.out.println("Color = " + color); } // 创建另一个颜色列表并添加三种颜色 // 使用双括号初始化。 List<String> colors2 = new ArrayList<String>() {{ add("Red"); add("Green"); add("Blue"); }}; for (String color : colors2) { System.out.println("Color = " + color); } } }
实际上发生的是:第一个大括号创建了一个匿名内部类,第二个大括号是一个初始化程序块。由于需要创建内部类,因此认为双括号初始化的速度较慢。
由于存在性能问题,最好不要在生产代码中使用此技术,而在单元测试中使用它可以使测试看起来更简单。