在 Java 中声明静态字典

declaring static dictionary in Java

有什么方法可以将 hashMap 或 hashTable 声明为静态但不是最终的? 我希望能够更新它,因此我不希望它成为最终版本..

如果没有,还有什么其他方法可以创建静态字典?

您可以这样做,但很可能您不需要将其设为非最终状态。

当您将 reference 设为 final 时,它只是那个引用,而不是您引用的无法更改的对象。

例如

static final Map<String, String> map = ...

map.put("Hello", "world"); // is okay
map = new HashMap<>();     // not okay

顺便说一句,拥有 global/static 个集合通常不是好的做法。您应该尽可能限制对此类集合的访问并确保它是线程安全的,除非您知道这不是必需的。例如您可以

而不是创建集合 public
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);
}