在 Java 14 中写入 Record 字段

ppp*_*ppp -1 java java-14 java-record

通过对 Java 14 中 Records 的介绍的简短搜索,我看到 Record 字段被编译为最终实例变量。这似乎意味着我不能写入 Record 字段......也没有任何教程提到关于写入 Record 字段的任何内容。

这是为什么?为什么我不能像在 C 中使用结构一样在 Java 14 中使用 Record ?

感谢您的任何见解

Mic*_*ael 5

记录为声明类提供了一种紧凑的语法,这些类是浅不可变数据的透明持有者

...

记录的组成部分是隐式最终的。此限制体现了广泛适用于数据聚合不可变默认策略。

来源

不可变,至少在表面上是不可变的,这正是关键所在。记录被设计为值类型,所以不,你不能改变它们。

  • 另一个可能更有用的文档是 [Java 的数据类和密封类型](https://cr.openjdk.java.net/~briangoetz/amber/datum.html),它涉及所涉及的设计决策,特别是关于代数的部分Annie、Boilerplate Billy、JavaBean Jerry、POJO Patty、Tuple Tommy 和 Values Victor。 (6认同)
  • @ppp Java 程序员能够很好地利用字符串的不可变状态。您可以将“withX”等方法添加到记录中,以返回字段具有不同值的新记录。 (3认同)
  • @ppp您对“紧凑”一词的使用掩盖了您的假设,即记录的主要目的是语法简洁,但事实并非如此。主要目的是语义清晰;句法简洁也是一个好处。记录是_名义上的元组_(汤米获胜。)元组通常是不可变的(我确信有反例,但我现在想不出任何反例。) (3认同)