2015-02-27 3 views
-2

Есть ли способ объявить hashMap или hashTable статичным, но не окончательным? Я хочу, чтобы иметь возможность обновлять его, и поэтому я не хочу, чтобы это было окончательным.Объявление статического словаря в Java

Если нет, то каким другим способом я могу создать статический словарь?

+1

Пробовали ли вы 'публичного статического Map словарного = новый HashMap ();'? –

+2

что вы говорите ... не имеет никакого смысла. Пожалуйста, четко укажите, что вы пытаетесь добиться, что .. ?? – Shaz

ответ

2

Вы можете сделать это, но, скорее всего, вам не нужно делать его окончательным.

Когда вы делаете ссылку , это только эта ссылка, а не объект, на который вы ссылаетесь, который не может быть изменен.

например.

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

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

BTW, как правило, не рекомендуется использовать глобальные/статические коллекции. Вы должны максимально ограничить доступ к такой коллекции и убедиться, что она защищена потоками, если вы не знаете, что это не требуется. например вместо того, чтобы сбор общественность, вы можете сделать

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); 
} 
+0

Хорошо, я понял :-) thanx – Ohad