在 Java 中,不可变类(Immutable Class)指的是对象一旦创建,其状态(字段值)就不能被修改的类(例如 String、Integer、LocalDate 等)。
不可变类的主要作用和好处可以从以下几个方面理解:
不可变对象天然线程安全:
✅ 示例:
String s = "hello";
多个线程同时读 s 是安全的。
方法参数或返回值使用不可变对象时:
✅ 示例:
public User copyUser(User user) {
return new User(user.name(), user.age());
}
不会破坏原始对象。
不可变对象可以安全缓存:
✅ 示例:
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true
如果 Key 可变,会导致:
✅ 推荐:
Map<String, String> map = new HashMap<>();
❌ 不推荐:
Map<MutableUser, String> map; // 危险
不可变类:
✅ 适合用不可变类:
❌ 不适合:
原则:
finalprivate finalpublic final class User {
private final String name;
private final int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String name() { return name; }
public int age() { return age; }
}
StringInteger、Long、DoubleBigDecimalLocalDate / LocalTime / InstantOptionalJava 不可变类用于提高安全性、线程安全性和代码可维护性,尤其在并发和共享数据场景中非常重要。
如果你愿意,我也可以讲:
String 要设计成不可变免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。