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!
Кто-нибудь может объяснить это?