线程安全——不可变对象(三)

前言

有一种对象发布了就是安全的,即不可变对象。

不可变对象需要满足的条件

  • 对象创建以后其状态就不可修改
  • 对象所有域都是 final 类型
  • 对象都是正确创建的(安全发布)

final 关键字

  • 修饰类:不能被继承,final 类中的变量可以根据需要设置为 final,final 类中的方法隐式的被设置为 final 方法。
  • 修饰方法:不能被继承类修改,一个类的 private 方法会被隐式的指定为 final 方法。
  • 修饰变量:
    • 基本数据类型变量:初始化之后,值不会改变。
    • 引用数据类型变量:初始化之后,不能指向另外的引用。

Collections.unmodifiableXXX

被这个类方法修饰的 Collection、List、Set、Map…为不可变对象。

Guava:InmutableXXX

初始化方法包含的 Collection、List、Set、Map…为不可变对象。

文章目录
  1. 1. 前言
  2. 2. 不可变对象需要满足的条件
  3. 3. final 关键字
  4. 4. Collections.unmodifiableXXX
  5. 5. Guava:InmutableXXX
|