但是,在Java中偏爱不可变对象有哪些弊端?与ORM或Web演示工具不兼容?
基于反射的框架由于不可变对象而变得复杂,因为它们 需要 构造函数注入:
- Java中没有默认参数,这迫使我们始终提供所有必要的依赖项
- 构造函数的覆盖可能很杂乱
- 构造函数自变量名称通常无法通过反射获得,这迫使我们依赖自变量顺序来进行依赖关系解析
实施的复杂性?
创建不可变的对象仍然很无聊。像groovy一样,编译器应注意实现细节
是否可以设计一个主要使用不可变对象的大规模系统(深层对象图)?
肯定是的;不可变对象为其他对象(它们倾向于组成)提供了很好的构建块,因为当您可以依靠复杂对象的不可变组件时,维护复杂对象的不变性要容易得多。对我而言,唯一真正的缺点是创建许多临时对象(例如,String
concat在过去是一个问题)。



