有没有办法将hashMap或hashTable声明为静态但不是final? 我希望能够更新它,因此我不希望它是最终的......
如果没有,我可以用其他方式创建静态字典?
答案 0 :(得分:2)
你可以做到这一点但很可能你不需要让它不是最终的。
当您进行引用最终时,它只是该引用,而不是您引用的无法更改的对象。
e.g。
static final Map<String, String> map = ...
map.put("Hello", "world"); // is okay
map = new HashMap<>(); // not okay
顺便说一句,拥有全局/静态集合通常不是一种好习惯。您应尽可能限制对此类集合的访问,并确保它是线程安全的,除非您知道这不是必需的。例如而不是公开收藏,你可以做
private static final Map<String, String> map = ...
public static synchronized void put(String key, String value) {
map.put(key, value);
}
public static synchronized String get(String key) {
return map.get(key);
}