您将如何在 Java 中初始化静态 Map
?
方法一:静态初始化
方法二:实例初始化器(匿名子类)或其他方法?
各自的优缺点是什么?
这是说明这两种方法的示例:
import java.util.HashMap;
import java.util.Map;
public class Test {
private static final Map<Integer, String> myMap = new HashMap<>();
static {
myMap.put(1, "one");
myMap.put(2, "two");
}
private static final Map<Integer, String> myMap2 = new HashMap<>(){
{
put(1, "one");
put(2, "two");
}
};
}
原文由 dogbane 发布,翻译遵循 CC BY-SA 4.0 许可协议
在这种情况下,实例初始化器只是语法糖,对吧?我不明白为什么你需要一个额外的匿名类来初始化。如果正在创建的类是最终的,它将不起作用。
您也可以使用静态初始化器创建不可变映射: