当前位置:  开发笔记 > 编程语言 > 正文

不可变对象的缺点

如何解决《不可变对象的缺点》经验,为你挑选了1个好方法。

我知道Immutable对象比可变对象提供了几个优点,比起它们比可变对象更易于推理,它们没有随时间变化的复杂状态空间,我们可以自由地传递它们,它们可以制作安全的哈希表键等.所以我的问题是不可变对象的缺点是什么?



1> Ali Dehghani..:

引自Effective Java:

不可变类的唯一真正缺点是它们需要为每个不同的值分别使用一个对象.创建这些对象可能成本很高,尤其是在它们很大的情况下.例如,假设您有一个百万位的BigInteger并且您想要更改其低位:

BigInteger moby = ...; 
moby = moby.flipBit(0);

flipBit方法创建一个新的BigInteger实例,也是一百万位长,只与一位不同.该操作需要时间和空间与大小成比例BigInteger.对比这个 java.util.BitSet.类似BigInteger,BitSet表示任意长的位序列,但不同BigInteger,BitSet是可变的.本 BitSet类提供了一种方法,可以让你改变在常数时间内millionbit实例的单位的状态.

阅读第15项:最小化可变性的完整项目

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有