不可变类特征

Posted 爱叨叨的程序狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不可变类特征相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

不可变类的优点:

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

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

以上是关于不可变类特征的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个不可变类

可变类还是不可变类?

Java 不可变类

java中一个类是不可变类的条件是啥?求详细解答。

JAVA不可变类(immutable)机制与String的不可变性

不可变类