gpt4 book ai didi

java - 有效的不可变对象(immutable对象)有意义吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:26 25 4
gpt4 key购买 nike

在书中Java Concurrency In Practice它解释了“有效不可变”对象相对于可变对象在并发方面的优势。但它没有解释“有效不可变”对象相对于真正不可变对象(immutable对象)的优势。

我不明白:难道你不能总是在你决定安全地发布一个“有效不可变”对象的那一刻构建一个真正不可变的对象吗? (与其进行“安全发布”,不如构建一个真正不可变的对象,仅此而已)

当我设计类时,我没有看到我不能总是构建一个真正不可变对象(immutable对象)的情况(如果需要使用委托(delegate)等来构建其他包装对象,它们本身当然是真正不可变的)决定“安全发布”。

“有效不可变”对象及其“安全发布”是否只是糟糕的设计或糟糕的 API 的一个例子?

你会在哪里被迫使用一个有效的不可变对象(immutable对象),并被迫在你无法构建更高级的真正不可变对象(immutable对象)的地方安全地发布它?

最佳答案

是的,它们在某些情况下是有意义的。一个简单的示例是当您希望延迟生成并缓存某些属性时,这样您就可以避免在从未访问过的情况下生成它的开销。 String 是执行此操作(使用其哈希码)的有效不可变类的示例。

关于java - 有效的不可变对象(immutable对象)有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707426/

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