Quelle est la différence entre les Collections.unmodifiableSet() et ImmutableSet de Goyave?

JavaDoc de ImmutableSet dit:

Contrairement à Collections.unmodifiableSet, qui est une vue d'une collecte séparée qui peut encore changer, une instance de cette classe contient ses propres données privées et ne changera jamais. Cette classe est commode pour le public static final sets (constant"ensembles") et vous permet aussi de faire facilement sur la défensive "copie" d'un ensemble fourni à votre classe de l'appelant.

Mais la ImmutableSet toujours des magasins de référence d'éléments, je ne pouvais pas comprendre la différence de Collections.unmodifiableSet(). Exemple:

StringBuffer s=new StringBuffer("a");
ImmutableSet<StringBuffer> set= ImmutableSet.of(s);
s.append("b");//s is "ab", s is still changed here!

Quelqu'un pourrait-il expliquer?

InformationsquelleAutor | 2011-04-10