java 16记录类的相关概念

本文介绍了Java16中的记录类,如何通过简洁方式定义常量类,包括自动包含成员变量、构造方法、get方法以及equals、hashCode等。同时,讨论了记录类的特性、可自定义部分和构造方法的使用规则。
摘要由CSDN通过智能技术生成

概述

有的时候我们只需要一个很简单的类,像是常量一样,其成员变量在new过后基本不会改变,我们希望把这些成员变量定义为private final类型,这个时候就可以使用到在java 14中预览、java 16正式发布的 记录(record) 类,用于简化这种简单类的创建。

特性

我们以一个坐标类来说明 记录 这种特殊类的特点。

1.我们可以将坐标类简洁的定义为如下形式:

record Point(double x,double y) { }

 2.该类中自动包含成员变量字段:

private final double x;

private final double y;

 3.该类中自动包含一个构造方法:

Point(double x, double y) { ... }

4.该类中自动包含相关成员变量的get方法(省略了get字段): 

public double x() { return x; }

public double y() { return y; }

注释:在java中,类的变量与方法具有相同的名字是合法的。 

 5.该类中自动包含3个自动定义的方法:toString、equals、hashCode。

可自定义部分

1.不能为记录添加额外的实例字段,如有需要,则不应使用记录类。

private double r;    //error

2.可以定义静态字段和静态方法,这些方法属于类而不属于任何一个实例。

public static Point ORIGIN = new Point(0, 0);

public static double distance(Point p, Point q){

        return Math.hypot(p.x-q.x, p.y-q.y);

}

 3.在创建record类的标签时,可以加入可变类,但十分不推荐这样做,它违背了record类的初衷。

record PointInTime(double x, double y, Date when) { }

 

构造方法

包含:标准构造方法、自定义构造方法、标准构造方法的简洁重载。

1.标准构造方法即为自动生成的默认构造方法,不再赘述。

2.自定义构造方法:第一个语句必须是调用另一个构造器,虽然不必是标准构造器,但最终一定会调用标准构造器。

record Point(double x, double y){
   public Point() {
      this(0, 0); 
   }
}

3.你可以通过省略入参结构的方法,简洁的重载标准构造方法:

 record Range(int from, int to){
   public Range{
      if (from > to){ int temp = from; from = to; to = temp; }
   }
}

经验总结

1.记录类对所有标准字段自动定义为private final类型,且不允许自定义另外的实例字段。

2.可以自定义静态变量和静态方法。

3.实例字段可以定义可变类型,但不推荐这样做。 

4.自定义构造方法时,要注意语法上的规定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值