1
3
我想这取决于你想从不变中得到什么。如果您希望得到保证的线程安全性(所有内容都必须声明为最终的,包括依赖项),那么我认为工厂、生成器或构造函数注入是您唯一的选择。 但是,如果您只希望状态不变,那么声明状态变量final就足够了。即使不可变的字符串类在其实现中也有可变字段(hashcode值的缓存)。只要您的代码以其他方式确保实例在没有注入的情况下是不可用的,那么一切都应该是好的。 |
2
4
生成不可变对象的主要方法有两种:
第一种方法是以弹簧为中心的,因为它需要实现特定于弹簧的接口。您可以通过创建常规bean的工厂bean
使用第二种方法对弹簧特别有用。您可以指示Spring在bean初始化之后调用一个方法,例如seal()来密封对象-使其不可变。或者,您可以实现
|
3
1
在爪哇,您可以使用 builder 在其构造函数中初始化一个不可变的对象,这样您就可以避开setter。 但是,如果使用scala,不可变性是 the default . |
4
0
在Java中,如果你使用MutoStor方法来进行设置,那么在初始化对象之后添加逻辑以防止更改是相当便宜的(虽然在我看来也很难看)。
不过,最好是进行动态检查。它不会给你任何关于你已经拥有的东西的静态反馈。 |
dallin · 数组中的逗号运算符是否有名称? 10 年前 |