进击的 Java(七)
天下文章一大抄。这句话放哪都没错,并不是贬义,技术的进步总是螺旋上升的,每一次更新迭代都会基于前人的工作基础,每次都是从头到尾的革命性创新是不可能的,也没必要。那么今天要讲的就是一个在 Java14 中预览,Java16 正式发布的特性:Record 类型。
首先如果你了解过一点点 kotlin,这个 Record 类型跟 kotlin 中的 data class 十分类似,甚至我感觉命名上 kotlin 更友好一些,可以很直观的了解是干嘛的。相比之下,Record 就是显的有些隐晦。如果你恰好没接触过 kotlin,只写 Java 的话,那你一定知道 lombok 这样的插件存在。没错,Record 类型就是官方的 lombok 插件。Record 类会生成 get/set/hashcode/equals 和构造方法,没有多余的注解和代码。写法上跟 data class 如出一辙,可以说除了改了个名字,别的是一模一样。
复制代码
这就是一个 record 类,甚至可以不用写 class 关键字。不仅可以是一个单独的类文件,也可以是一个成员类:
复制代码
这样应对多个临时 dto,vo 之类的数据时就可以写在一个类里面了。还可以出现在方法里:
复制代码
作为一个临时数据类,在一些灵活的场景下会有用武之处。
需要注意的几点
构造函数
默认 record 类具有全部属性的构造函数
属性
属性最好在类声明时就写在括号中,如果想在 body 中单独声明,仅支持 static 属性,不建议这样
不能被继承
record 类不能被继承
官方设计 record 类的初衷就是当作一个数据类,不要再出现什么 dto,form,vo 等等之类的类了,而且还在类上写一堆乱糟糟的注解。更简洁,更实用。
评论