一、什么是档案类
Java 档案类是用来表示不可变数据的透明载体,用来简化不可变数据的表达,提高编码效率,降低编码错误。
二、档案类限制
Java 档案类不支持扩展子句,用户不能定制它的父类。隐含的,它的父类是 java.lang.Record。父类不能定制,也就意味着我们不能通过修改父类来影响 Java 档案的行为。
Java 档案类是个终极(final)类,不支持子类,也不能是抽象类。没有子类,也就意味着我们不能通过修改子类来改变 Java 档案的行为。
Java 档案类声明的变量是不可变的变量。这就是我们前面反复强调的,一旦实例化就不能再修改的关键所在。
Java 档案类不能声明可变的变量,也不能支持实例初始化的方法。这就保证了,我们只能使用档案类形式的构造方法,避免额外的初始化对可变性的影响。
Java 档案类不能声明本地(native)方法。如果允许了本地方法,也就意味着打开了修改不可变变量的后门。
三、档案类示例
public record Circle(double radius) { //构造方法,可以用于参数检查 public Circle { if (radius < 0) { throw new IllegalArgumentException("The radius of a circle cannot be negative [" + radius + "]"); } } public double area() { return Math.PI * radius * radius; } }
public static void main(String[] args) { //创建实例 Circle circle = new Circle(6); //访问属性 System.out.println(circle.radius()); //6.0 //调用方法 System.out.println(circle.area()); //113.09733552923255 }
和普通类比较差异