Java 面试题
目录

Java 中如何创建一个不可变类?

· 约 3 分钟读完 · 第 27 / 274 章

推荐答案

本题详细解读

1. 使用 final 修饰类

通过将类声明为 final,可以防止其他类继承该类,从而避免子类修改其状态。

2. 所有字段声明为 final

将类的所有字段声明为 final,确保这些字段在对象创建后不能被修改。

3. 不提供 setter 方法

不可变类不应该提供任何可以修改字段值的方法,因此不提供 setter 方法。

4. 通过构造函数初始化所有字段

所有字段都应在构造函数中初始化,确保对象一旦创建,其状态就不能被改变。

5. 如果字段是可变对象,确保深拷贝

如果字段是可变对象(如集合、数组等),在构造函数中应进行深拷贝,并在返回时返回拷贝的副本,以防止外部修改。

6. 避免暴露内部可变状态

确保不直接返回内部可变对象的引用,而是返回它们的拷贝,以防止外部代码修改内部状态。

7. 线程安全

由于不可变类的状态在创建后不能被修改,因此它是线程安全的,可以在多线程环境中安全使用。