样板是一个源自钢铁制造业的术语,其中形成模具以铸造类似的物体。在编程世界中,样板代码是代码的一部分,项目里面使用的地方很多,但是通常创建完成之后就很少或者就不会更改了。在Java中,不可变的数据载体类用于与数据库,Web服务进行通信,会创建许多样板代码,其中包括构造函数,访问器,equals(),hashCode()和toString()等。
下面的代码就是一个比较典型的类。
java.lang.Record类是在 Java 14 中作为一种特殊类型的类引入,其目的是消除样板代码。记录类是使用关键字 record 创建的,并由 new 关键字实例化,就像在 Java 中创建任何其他对象一样。
record类是默认的最终类,它隐式扩展java.lang.Record类,不能继承任何其他类。但是,您可以实现接口并实现关联的方法。
record类自动实现下列内容:
包含所有字段的规范构造函数
字段的访问器(而不是记录中的 getName(),我们可以使用 name()访问它)
equals()和 hashCode()
toString()
需要注意的一点是,记录中不会有任何 setter 方法,因为所有记录类都是不可变的,您无法修改它们。您可以使用记录中的小快捷方式覆盖记录中的规范构造函数,称为“紧凑构造函数”,我们不需要提及参数,record将处理它。
Java record可以帮助从项目中删除大量样板代码,这样不易出错。
Java语言一直在演变,开发语言是给人类使用的,从这个角度讲,这样简化的演变是好事。但是所有事物可能都不止两面性,提供便利的同时一定会掩盖细节。而有些细节被掩盖是无所谓的,而有些会带来坑,编程时需要时刻提醒自己。