2010-01-27 6 views
3

Je voudrais mettre des enveloppes non modifiables autour de certaines collections de Trove: J'ai vérifié la documentation de Trove et je n'arrive pas à trouver un moyen facile de le faire (j'ai peut-être oublié quelque chose d'évident).Comment retourner une vue non modifiable d'une collection Java Trove?

Alors que maintenant chaque fois que je besoin d'un tel emballage non modifiable Je l'extension de la collection Trove (par exemple TIntLongHashMap) et de déléguer tous les appels en lecture seule au Trove enveloppé sujet et jeter un UnsupportedOperationException dans chaque méthode qui essaie de modifier la collection.

Y a-t-il un moyen plus facile? Cette question ne concerne pas les collections Java par défaut et, dans ce cas, je ne m'intéresse pas du tout ni aux collections Java par défaut ni aux autres collections Java: cette question concerne spécifiquement Trove.

Répondre

1

Il n'y a aucun moyen de le faire avec l'API Trove, uniquement avec les décorateurs.

3

La réponse acceptée était correcte à l'époque, mais pour tous ceux qui cherchent à faire de même, Trove 3 prend désormais en charge cette classe via la classe TCollections.

E.g.

TIntLongMap myMap = new TIntLongHashMap(); 
TIntLongMap myUnmodifiableMap = TCollections.unmodifiableMap(myMap); 

myUnmodifiableMap.put(1, 2L); // throws UnsupportedOperationException 
Questions connexes