Java 新特性-档案类
档案类特性在 JDK16 中正式发布,它是用来表示不可变数据的透明载体。档案类的关键字是 record,它内置了构造方法、hashCode 方法、equals 方法、toString 方法和不可变数据的读取方法等方法的缺省实现。
下面是一个档案类的 demo,它用来表示圆:
1 | |
对 Circle 类的调用示例代码:
1 | |
Java 档案类“不可变的数据”主要体现在以下几点:
- Java 档案类不支持扩展子句,用户不能定制它的父类。隐含的,它的父类是 java.lang.Record。父类不能定制,也就意味着我们不能通过修改父类来影响 Java 档案的行为。
- Java 档案类是个终极(final)类,不支持子类,也不能是抽象类。没有子类,也就意味着我们不能通过修改子类来改变 Java 档案的行为。
- Java 档案类声明的变量是不可变的变量。这就是我们前面反复强调的,一旦实例化就不能再修改的关键所在。
- Java 档案类不能声明可变的变量,也不能支持实例初始化的方法。这就保证了,我们只能使用档案类形式的构造方法,避免额外的初始化对可变性的影响。
- Java 档案类不能声明本地(native)方法。如果允许了本地方法,也就意味着打开了修改不可变变量的后门。
通常我们把 Java 档案类看成是一种特殊形式的 Java 类。除了上述的限制,Java 档案类和普通类的用法是一样的。
Java 档案类“透明载体”是指档案类承载有缺省实现的方法,这些方法可以直接使用,也可以替换掉。
Java 新特性-档案类
https://blog.yohlj.cn/posts/d7c67c03/