什么情况下使用不可变对象和类?

一般我们创建一个对象,可以改变它的内容的。
在什么情况下会用到不可变对象呢?
不可变类:

  • 所有数据域都是私有的
  • 没有修改数据的方法
  • 没有一个访问方法,它会返回一个指向可变数据域的引用

一个对象虽然有很多字段,但是它像原子一样不能修改某一部分
比如日期时间、一个地址等等

“URL是不可变的,构造一个URL对象后,其字段不再改变。还有一个副作用:可以保证它们是“线程安全”的”。---摘自《Java网络编程(第四版)》124P