在 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);
}
有什么方法可以将 hashMap 或 hashTable 声明为静态但不是最终的? 我希望能够更新它,因此我不希望它成为最终版本..
如果没有,还有什么其他方法可以创建静态字典?
您可以这样做,但很可能您不需要将其设为非最终状态。
当您将 reference 设为 final 时,它只是那个引用,而不是您引用的无法更改的对象。
例如
static final Map<String, String> map = ...
map.put("Hello", "world"); // is okay
map = new HashMap<>(); // not okay
顺便说一句,拥有 global/static 个集合通常不是好的做法。您应该尽可能限制对此类集合的访问并确保它是线程安全的,除非您知道这不是必需的。例如您可以
而不是创建集合 publicprivate 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);
}