不可变类的特征

128 阅读1分钟

不可变类:实例不能被修改的类。

每个实例中包含的所有信息都必须在创建该实例时提供,且在对象的整个生命周期内固定不变。

不可变类,如:String、基本类型的爆装备、BigInteger和BigDecimal。

为了使类成为不可变,要遵循以下五条原则:

  1. 不要提供任何会修改对象状态的方法(set方法)。
  2. 保证不会被扩展。(防止子类化,可使用fianl修饰类)
  3. 声明所有的域都是final的。
  4. 声明所有的域都为私有的。
  5. 确保对任何可变组件的互斥访问。

不可变类的优点:

  1. 不可变对象简单,只有在创建时的一种状态。
  2. 不可变对象创建后无需考虑额外的维护工作。
  3. 不可变对象本质上是线程安全的,他们不要求同步。
  4. 不可变对象可以被自由的共享其本身和内部信息。

因不可变对象的这些特性,对于频繁用到的值,尽可能的重复使用现有实例。