Java中的不可变类
Java中的不可变类(Immutable Class)是指对象一旦创建,其状态就不能被修改的类。
1. 核心特征
Section titled “1. 核心特征”- 所有字段都是
final和private; - 不提供
setter方法; - 类本身是
final的(防止子类破坏不可变性); - 如果包含可变对象引用,需要防御性拷贝。
2. 典型例子
Section titled “2. 典型例子”String、Integer、BigDecimal等包装类都是不可变类。
3. 创建示例
Section titled “3. 创建示例”public final class Person { private final String name; private final int age; private final List<String> hobbies;
public Person(String name, int age, List<String> hobbies) { this.name = name; this.age = age; // 防御性拷贝 this.hobbies = new ArrayList<>(hobbies); }
public String getName() { return name; } public int getAge() { return age; }
// 返回副本,防止外部修改 public List<String> getHobbies() { return new ArrayList<>(hobbies); }}- 线程安全:无需同步
- 可作为Map的key或Set元素
4. Java 14+ 简化方式
Section titled “4. Java 14+ 简化方式”使用Record可以快速创建简单的不可变类:
public record Point(int x, int y) {}