gpt4 book ai didi

java - Java中不可变对象(immutable对象)的缺点?

转载 作者:IT老高 更新时间:2023-10-28 21:01:08 27 4
gpt4 key购买 nike

Java 中不可变对象(immutable对象)的优势似乎很明显:

  • 一致的状态
  • 自动线程安全
  • 简单

您可以通过使用私有(private) final 字段和构造函数注入(inject)来支持不变性。

但是,在 Java 中偏爱不可变对象(immutable对象)有什么缺点?

  • 与 ORM 或 Web 演示工具不兼容?
  • 设计不灵活?
  • 实现复杂性?

是否可以设计一个主要使用不可变对象(immutable对象)的大规模系统(深度对象图)?

最佳答案

But, what are the downsides to favouring immutable objects in Java? incompatibility with ORM or web presentation tools?

基于反射的框架因不可变对象(immutable对象)而变得复杂,因为它们需要构造函数注入(inject):

  • Java 中没有默认参数,这迫使我们始终提供所有必要的依赖项
  • 构造函数覆盖可能很困惑
  • 构造函数参数名称通常不能通过反射获得,这迫使我们依赖参数顺序来解决依赖关系

Implementation complexities?

创建不可变对象(immutable对象)仍然是一项无聊的任务;编译器应该注意实现细节,如 groovy

Is it possible to design a large-scale system (deep object graph) that predominately uses immutable objects?

绝对是的;不可变对象(immutable对象)为其他对象提供了很好的构建 block (它们有利于组合),因为当您可以依赖其不可变组件时,维护复杂对象的不变量会容易得多。对我来说唯一真正的缺点是创建许多临时对象(例如 String concat was a problem in the past )。

关于java - Java中不可变对象(immutable对象)的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com