为什么我们需要可变类?

Rya*_*yan 3 java

我今天读了一章Effective Java.本章是关于最小化对象的可变性.我非常理解为什么不可变对象是好的,比如线程安全,简单等等.我的问题是因为不可变对象有很多优点,是否有任何可变对象首选的情况?

das*_*ght 11

您需要可变类来处理将类从一个状态转换为另一个A状态Z会产生大量中间对象的情况,您宁愿不花时间创建它们.

一个经典的例子是连接一个字符串数组.假设您需要连接100个字符串,并生成单个结果.如果没有可变字符串,您将需要生成98个中间对象,这些对象几乎可以立即进行垃圾收集.这在CPU上相当浪费,使可变对象成为正确的解决方案.

在需要可变对象时还有其他情况.例如,将可变对象传递给方法可以让您收集多个结果,而不会跳过太多语法箍.另一个例子是排序和过滤:当然,您可以创建一个获取原始集合的方法,并返回一个已排序的方法,但这对于较大的集合来说会变得非常浪费.