此页内容

001、什么是不可变类

358字约1分钟

2025-02-08

​ 不可变类指的是再创建后其状态(字段)不再发生改变,一旦对象被创建,它的所有属性不能发生改变,类的实例在整个生命周期保持不变。

不可变类具有以下特征:

1、声明类为final,避免被子类继承;

2、字段被 private、final 修饰,确保创建后不再发生改变;

3、通过构造函数初始化所有字段

4、不存在改变对象属性的方法,如:setter

5、如果类包含可变对象的引用,确保这些引用在对象的外部不被修改,例如:getter 返回对象的副本(new 一个对象)来保护可变对象。

不可变类的优缺点

优点

1、线程安全:由于不可变对对象的状态不可改变,其天生就是线程安全的,并发环境无需同步;

2、缓存友好:不可变对象可以安全的被缓存和共享,如 String 的字符串常量池;

3、防止状态不一致:不可变类可以有效避免因修改对象而导致对象状态不一致的问题。

缺点

性能问题:不可变对象在状态改变时都会创建新对象,这会导致性能开销,尤其是在大规模对象或频繁修改的场景。