JavaDoc ImmutableSet
говорит:
В отличие от
Collections.unmodifiableSet
, который является видом отдельной коллекции, которая все еще может измениться, экземпляр этого класса содержит свои личные данные и никогда не изменится. Этот класс удобен для публичных статических окончательных наборов ( "постоянные наборы" ), а также позволяет легко сделать "защитную копию" набора, предоставленного вашему классу вызывающим.
Но ImmutableSet
по-прежнему сохраняет ссылку на элементы, я не мог понять разницу в Collections.unmodifiableSet()
. Пример:
StringBuffer s=new StringBuffer("a");
ImmutableSet<StringBuffer> set= ImmutableSet.of(s);
s.append("b");//s is "ab", s is still changed here!
Может ли кто-нибудь объяснить это?