集合契约对设计的影响解析
1. 对象生命周期与分类
对象的生命周期可分为三个可衡量的阶段:构造阶段、初始化阶段(从构造结束到首次进入集合)和集合后阶段(进入集合后直至被垃圾回收或程序终止)。基于对象在这些阶段中相等性的变化,可将对象分为以下四类:
| 对象类型 | 构造阶段 | 初始化阶段 | 集合后阶段 |
| — | — | — | — |
| 身份相等性(Identity as Equality) | | | |
| 初始化相等性(Initialised Equality) | x | | |
| 延迟初始化相等性(Late-initialised Equality) | x | x | |
| 重新索引(Reindexing) | x | x | x |
这里的“x”表示该阶段可能发生相等性的变化。
- 身份相等性 :此类对象未定义哈希码方法,依赖引用相等性参与基于相等性的集合操作。
- 初始化相等性 :定义了哈希码,且在构造完成后哈希码不再改变。
- 延迟初始化相等性 :构造完成后但进入集合前哈希码会发生变化,构造阶段也可能改变。
- 重新索引 :进入集合后哈希码会发生变化,例如离开基于哈希的集合、改变哈希码后再重新进入集合的对象,以及存储在不使用相等性的集合中且可随意改变的对象。
根据构造后相等性是否改变,还可将对象分为不可变相等性对象(身份相等性和初始化相等性)和
超级会员免费看
订阅专栏 解锁全文
2993

被折叠的 条评论
为什么被折叠?



