如果某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象

不可变对象一定是线程安全的;

不可变性并不等于将对象中的所有域都声明为final类型,即使对象中的所有域都是final类型的,这个对象也仍然是可变的,因为在final类型的域中可以保存对可变对象的引用;

不可变对象

当满足以下条件时,对象才是不可变的:

  • 对象创建以后其状态就不能改变;
  • 对象的所有域都是final类型;
  • 对象是正确创建的(在对象的创建期间this引用没有逸出);

事实不可变对象

如果对象从技术上来看是可变的,但其状态在发布后不会改变,那么把这种对象称为“事实不可变对象”

可变对象

results matching ""

    No results matching ""