1. 简介
record关键字会为类自动生成get,set,toString,equals方法,不用在手动创建模板类.
2.使用
record Employee(String name, int id) {}
public class BasicRecord { public static void main(String[] args) { var bob = new Employee("Bob", 11); var dot = new Employee("Dorothy Gale", 9); System.out.println(bob.name()); System.out.println(bob.id()); System.out.println(bob); var map = Map.of(bob, "A", dot, "B"); System.out.println(map); } }
使用record关键字后,会自动生成private final 类型的name和id字段,以及name(),id()方法,还有生成equals和toString方法,节省了很多操作.
record类也可以继承接口,比如:
interface Star{ double brightness(); double density(); } record RedDwarf(double brightness) implements Star{ public double density() { return 0.00; } }
因为构造函数已经加入了brightness参数,所以只需要重写desity方法即可.
record关键字也可以自己定义构造方法,可以使用紧凑构造器,比如:
record Point(int x, int y) { void assertPositive(int val) { if(val < 0) { throw new IllegalArgumentException(); } } Point{ assertPositive(x); assertPositive(y); } } record PlusTen(int x) { PlusTen{ x += 10; } }
Point {} 中我们验证了x和y,PlusTen中,我们把参数增加了10.虽然构造器也能实现,但是限制比较多,参数名还必须一样,所以最好用紧凑构造器.
标签:name,关键字,int,record,println,bob From: https://www.cnblogs.com/lishuaiqi/p/17369848.html