【发布时间】:2021-03-19 03:40:49
【问题描述】:
JEP-395 说
一个记录类自动获得许多标准成员:
- 对于标头中的每个组件,有两个成员:一个与组件具有相同名称和返回类型的公共访问器方法,以及一个具有相同名称的私有最终字段类型为组件;
如果生成的 final 字段与访问器方法同名,为什么不生成公共的 final 字段呢?
由于记录类的实例可以被序列化和反序列化,因此几乎不会仔细更改记录组件。但是,不能通过提供writeObject、readObject、readObjectNoData、writeExternal、readExternal方法自定义流程
因此更改 API 内部实现(记录组件)不是一个合适的理由。但我有充分的理由来自@Brian Goetz
谢谢大家关注我的傻问题
【问题讨论】:
-
直接访问你的字段是没有意义的(编程封装的基本原理),所以它只是一个很好的编程实践
-
如果有公共访问器方法,那么公开该字段的意义何在?我无法理解您的第二个问题。
-
几十年的经验不同意你的看法。
-
而在这几十年的 Java 历史中,并没有纯数据类。
-
@DonggiKim Java 中一直存在纯数据类,您只需要自己处理所有管道,而不是编译器为您完成大部分工作。