在 Java 里,“不可变(Immutable)”对象指的是创建后状态不能被修改的对象(如 String、Integer、LocalDateTime 等)。下面从使用场景和为什么适合两个角度说明。
场景:
原因:
synchronized、锁✅ 示例:
final class User {
private final String name;
private final int age;
User(String name, int age) {
this.name = name;
this.age = age;
}
}
场景:
HashMapHashSet原因:
✅ 推荐:
Map<UserId, Info> map;
❌ 不推荐:
Map<MutableUser, Info> map;
场景:
原因:
场景:
原因:
场景:
原因:
public User getUser() {
return new User(name, age); // 每次新对象
}
场景:
✅ 示例:
class Money {
private final BigDecimal amount;
}
❌ 频繁修改状态的场景
❌ 大对象 + 高频更新
❌ 性能极端敏感且对象很大
例如:
| 类 | 说明 |
|---|---|
String |
最经典 |
Integer / Long |
包装类 |
BigDecimal |
金额 |
LocalDate / LocalDateTime |
时间 |
Optional |
容器 |
List.of() |
不可变集合 |
只要“状态不该变、会被共享、要安全”,就用不可变。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。