java - Java 14 记录文档中 "shallowly immutable"的含义

标签 java java-14 java-record

我正在阅读 Records 的文档
并且不理解“浅不可变”一词。浅不可变是什么意思?
如果它是不可变的,为什么我们需要一个复制构造函数?为什么有两个“Hello World!”?

对于所有记录类,以下不变量必须成立:如果记录 R 的组件是 c1、c2、... cn,那么如果记录实例被复制如下:

 R copy = new R(r.c1(), r.c2(), ..., r.cn());  // copy constructor ?

那么肯定是r.equals(copy) .

最佳答案

浅不可变意味着,如果一个类有字段,这些字段被视为 final .但是,它们的字段(即字段的字段)不需要是 final .
您不需要实现构造函数,它已经为您实现了这种方式。但是如果你选择自己实现它,例如对于参数验证,那么这个不变量应该成立。

关于java - Java 14 记录文档中 "shallowly immutable"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62057172/

相关文章:

java - 使用vue和spring下载excel文件

java - android:使用匿名类以编程方式创建点击监听器

java - 调用 Spring Data Rest Repository 方法不返回链接

java - 使用 jpackage 实用程序进行代码签名+公证在 macOS 上不起作用

具有可为空组件的 Java 记录

Java 记录和字段注释

java - 如何让 switch case 在 Java 中接受多种数据类型?

java - PMD 插件因 Java 14 : Unsupported targetJdk 而失败

java - Grails 4.X 可以运行哪些版本的 Java?

Java 14 记录和数组