java并发编程实践读书问题
在java并发编程实践书中,3.4节的不可变性那个小节,有处不明,向各位请教:
“尽管存储姓名的set是可变的,但是ThreeStooges的设计使得它在被创建后就不可能再修改set。Stooges 的引用时final类型,所有所有对象状态只能通过final域询问”
其中这个设计怎么就使得被创建后不能修改set 了?之后还是可以add的啊?
代码如下:
public final class ThreeStooges{ private final Set<String> stooges = new HashSet<String>(); public ThreeStooges(){ stooges.add("1"); stooges.add("2"); } //这里是测试代码 public static void main(String[] args){ ThreeStooges t = new ThreeStooges();//此处new,构造函数已经完成 t.stooges.add("3");//但是这里还是能add,怎么书中就说这就不能再改变了 } }public static void main(String[] args){ ThreeStooges t = new ThreeStooges();//此处new,构造函数已经完成 t.stooges = new HashSet<String>(); }