Как мы знаем цель "окончательного" ключевого слова в java. Объявляя переменную как final, мы должны инициализировать переменную. например " final int a = 10;" Мы не можем изменить значение "a". Но если мы перейдем к HashTable, можно добавить некоторое значение, даже объявив HashTable окончательным.
Пример::
private static final Hashtable<String,Integer> MYHASH = new Hashtable<String,Integer>()
{{ put("foo", 1);
put("bar", 256);
put("data", 3);
put("moredata", 27);
put("hello", 32);
put("world", 65536); }};
Теперь я объявляю MYHASH HashTable окончательным. Если я попытаюсь добавить еще несколько элементов к этому, его принятие.
MYHASH.put("NEW DATA", 256);
Теперь в HashTable добавляется "НОВЫЕ ДАННЫЕ". Мои вопросы: почему он позволяет добавить даже объявление в качестве окончательного?