Java 记录与 Kotlin 数据类

Ber*_*Nau 6 java kotlin

Java 14 提供了一个名为Records的新功能,可帮助创建 javabean。

我已经使用 Kotlin 好几次了,当然,Java Records 让我想起了Data Classes

它们完全相似吗?或者除了语言语法之外,它们之间是否存在根本差异?

mre*_*rek 6

这是一篇关于所有这些差异的好文章。

总之:

相似之处

  • 生成的方法:equals, hashCode,toString
  • 生成的构造函数
  • 生成的 getter(但 Kotlin getter 被调用o.name,而 Java 使用 o.name()
  • 可以修改规范构造函数
  • 可以添加额外的方法

差异

Kotlin 的数据类支持许多其他小东西:

数据类 (Kotlin) 记录(Java)
copy 更容易创建对象的方法 没有copy方法
变量可以是varval 变量只能是 final
可以从其他非数据类继承 没有继承
可以定义非构造函数可变变量 只能定义静态变量

两者都非常适合减少代码膨胀。