我正在阅读Records的文档,不理解术语“shallowly immutable”的含义。我们所说的“shallowly immutable”是什么意思?如果它是不可变的,为什么我们需要一个复制构造函数?为什么有两个“Hello Worlds!”?
对于所有记录类,以下不变量必须成立:如果记录R的组件是c1、c2、……cn,则如果记录实例按以下方式复制:
那么必须成立的是
对于所有记录类,以下不变量必须成立:如果记录R的组件是c1、c2、……cn,则如果记录实例按以下方式复制:
R copy = new R(r.c1(), r.c2(), ..., r.cn()); // copy constructor ?
那么必须成立的是
r.equals(copy)
。