mirror of
https://github.com/sjsdfg/effective-java-3rd-chinese.git
synced 2024-12-26 12:50:29 +08:00
modify item 17
This commit is contained in:
parent
56ab08becc
commit
1aebd99908
@ -97,7 +97,7 @@ public static final Complex I = new Complex(0, 1);
|
||||
|
||||
**不仅可以共享不可变的对象,而且可以共享内部信息。** 例如,`BigInteger` 类在内部使用符号数值表示法。 符号用 `int` 值表示,数值用 `int` 数组表示。 `negate` 方法生成了一个数值相同但符号相反的新 `BigInteger` 实例。 即使它是可变的,也不需要复制数组;新创建的 `BigInteger` 指向与原始相同的内部数组。
|
||||
|
||||
**不可变对象为其他对象提供了很好的构件(building blocks)**,无论是可变的还是不可变的。 如果知道一个复杂组件的内部对象不会发生改变,那么维护复杂对象的不变量就容易多了。这一原则的特例是,不可变对象可以构成 `Map` 对象的键和 `Set` 的元素,一旦不可变对象作为 `Map` 的键或 `Set` 里的元素,即使破坏了 `Map` 和 `Set` 的不可变性,但不用担心它们的值会发生变化。
|
||||
**不可变对象为其他对象提供了很好的构件(building blocks)**,无论是可变的还是不可变的。 如果知道一个复杂组件的内部对象不会发生改变,那么维护复杂对象的不变性就容易多了。不可变对象是优秀的映射键和集合元素是这一原则的重要例子: 一旦不可变对象作为 `Map` 的键或 `Set` 里的元素,你就不需要担心`Map` 或 `Set` 的不变性被这些对象的值的变化所破坏。
|
||||
|
||||
**不可变对象无偿地提供了的原子失败机制(详见第 76 条)。** 它们的状态永远不会改变,所以不可能出现临时的不一致。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user