Rendre Hashtable immuable et en lecture seule en Java

Par raison de sécurité, il est parfois nécessaire de changer les droits d'accès pour éviter une modification défectueuse. C'est pour cela que Java à mis une méthode qui rend notre Hashtable inaccessible pour l'écriture ou en d'autres termes, une Hashtable non modifiable en lecture seulement.

Pour changer les droits d'accès, vous n'avez qu'à appeler la méthode de la classe Collections java.util.Collections.unmodifiableMap(Map map).

public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m): cette méthode retourne une vue de Hashtable immuable qui est impossible de la modifier.

L'exemple suivant montre l'utilisation de la méthode java.util.Collections.unmodifiableMap().

import java.util.Collections;
import java.util.Hashtable;
import java.util.Map;

public class Unmodifiable_Hashtable {
public static void main(String[] s) {
Hashtable hashtable = new Hashtable();
hashtable.put("1", "val1");
hashtable.put("2", "val2");
hashtable.put("3", "val3");

Map m = Collections.unmodifiableMap(hashtable);

m.put("4", "val4");

System.out.println(m);
}
}
Après la compilation et l'exécution du code ci-dessus, cela va produire le résultat suivant:

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableMap.put(Unknown Source)
at HashTable.Unmodifiable_Hashtable.main(Unmodifiable_Hashtable.java:16)
Références:
java.util.Collections.unmodifiableMap() Method