我有一个类可以完成一些模式匹配人员。 我使用:
将模式存储在hashmap中private static HashMap<String, String> map = new HashMap<String, String>();
static {
map.put("A", "aba");
}
此地图旨在为后者提供地图或字典。 我的问题是,有没有比使用&#34;静态&#34;更好的方法?当我创建一个实例时,我不必多次在hashmap中创建模式?
谢谢!
答案 0 :(得分:2)
第一次加载类时,静态初始值设定项只运行一次。您的静态地图将由您班级的所有实例共享。
如果不同的实例将从不同的线程编辑地图,请小心线程安全。
答案 1 :(得分:1)
当使用静态成员变量时,每次实例化周围类的实例时都不会实例化它们,它们只会在第一次加载类时实例化一次。
在您的情况下,假设您的Map永远不会更改,那么最好将其标记为final,以确保它永远不会更改,并将其包装在unmodifiableMap中以确保它不能被修改
例如:
private static final HashMap<String, String> map;
static {
HashMap<String, String> tmpMap = new HashMap<String, String>()
tmpMap.put("A", "aba");
map = Collections.unmodifiableMap(tmpMap);
}