Loading...

说说Java中的不可变类。

Java中的不可变类指的是在对象完成创建之后无法被修改的类

最典型的就是String,当然还有所有的基本类型的包装类,比如Integer、Long、Boolean等等。

如果要实现一个不可变类,至少需要同时满足以下5个条件:

  1. 为了防止子类继承父类之后添加了一些可变行为,导致不可变性遭到破坏,需要将类声明为final

  2. 为了保证字段只能在构造阶段赋值,并且之后就不能通过外部进行访问或者修改,需要通过private final对字段进行修饰,将变量锁死。

  3. 需要通过构造函数一次性初始化所有字段。

  4. 可以提供getter方法,但是不能提供setter或者修改状态的方法。

  5. 如果类中含有可变对象的引用,需要确保在对象外部无法对这些引用进行修改。

这样一个不可变类,因为不能对它进行修改,所以多线程访问时不需要加锁,天生的线程安全。

又因为它的状态不可变,所以很适合作为缓存的key。

不过,实现这种不可变的代价就是比较费内存。

最后更新于 2026-04-05 17:35:33
Code Road Record