Tck*_*Tck 2 java initialization hashcode lazy-evaluation
为什么说不可变对象使用惰性哈希码初始化呢?对于可变对象也是如此,我们只能在需要时才计算哈希码,这会导致延迟初始化吗?
对于可变类,存储 hashCode 通常没有多大意义,因为每次修改对象时都必须更新它(或至少将其取消,以便下次hashCode()调用时可以重新计算它)。
对于不可变的类,存储哈希码很有意义——一旦计算出来,它就永远不会改变(因为对象是不可变的),并且每次hashCode()调用时都不需要重新计算。作为进一步的优化,我们可以避免在第一次需要(即hashCode()调用)之前计算该值——即,使用延迟初始化。
没有什么可以禁止您对可变对象执行相同操作,这通常不是一个好主意。
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |