首页 > 其他分享 >record 关键字

record 关键字

时间:2023-05-03 22:57:50浏览次数:33  
标签:name 关键字 int record println bob

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

相关文章

  • C++-[override]关键字使用详解
    本文介绍了C++override关键字使用详解以及与重载的区别。C++override关键字使用详解一、override作用二、override在基类与派生类的应用2.1.纯虚函数2.2.普通虚函数2.3.Override重写三、Override实例四、C++中重载(overload)与覆盖(override)4.1.重载(overload)4.2.重写/覆......
  • C++ 11 :override 关键字的使用
    override关键字作用:在成员函数声明或定义中,override确保该函数为虚函数并覆写来自基类的虚函数。位置:函数调用运算符之后,函数体或纯虚函数标识“=0”之前。使用以后有以下好处:1.可以当注释用,方便阅读2.告诉阅读你代码的人,这是方法的复写3.编译器可以给你验证override......
  • 8、关键字
    关于关键字1.关于this区分局部变量和成员变量:this.成员代表成员变量指代对象本身:this.方法代表对象自己的方法this()只存在于构造方法中,其参数个数对应相同参数个数的构造方法,并且其使用时只能是构造方法的第一条语句2.final指的”是常变量“,或者是“只读变量”3.s......
  • TMVCActiveRecord捕获异常信息,自定义输出
    TMVCActiveRecord.CurrentConnection.StartTransaction;try//doTMVCActiveRecord.CurrentConnection.Commit;Render(201,'CreateSuccessfully','');exceptonE:ExceptiondobeginTMVCActiveRecord.CurrentCo......
  • MybatisPlus高级特性之ActiveRecord模式
    1、是什么?ActiveRecord是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表;而模型类的一个实例对应表中的一行记录。ActiveRecord一直广受解释型动态语言(PHP、Ruby等)的喜爱,通过围绕一个数据对象进行CRUD操作。而Java作为准静态(编译型)语言,对于ActiveRec......
  • 变量名尽量不要和关键字相同,否则容易出歧义
    变量名尽量不要和关键字相同,否则容易出歧义 >>>xm['zhang3','li4','wang5','zhao6']>>>''.join(str(e)foreinxm)Traceback(mostrecentcalllast):File"<pyshell#183>",line1,in......
  • lazada按关键字搜索商品API接口
    ​lazada按关键字搜索商品API接口,在lazada上搜索产品,如果只需要搜索单个产品的话,那么直接在搜索框输入“关键字”即可,如果需要多个产品,那么则需要进行关键字扩展。lazada按关键字搜索商品API接口分为两部分:1.查询列表部分:在列表部分输入“关键字”,即可查询到对应的商品列表;2......
  • 为Flowportal 流程库 增加 按流程关键字 全局搜索功能
    用户在Flowportal后台流程库中维护已建好的流程时,如果已建立的流程比较多且分布在多个文件夹下时,由于系统提供的流程查找功能,仅局限于在某个文件夹中按流程关键字过滤,导致查找流程效率底,速度慢,鉴于此,本人特别根据广大用户的实际需求,改进流程库的查找功能,使用户可以根据流程关键......
  • const关键字_常量指针与指针常量
    变量被const修饰,能且仅能被赋值一次。指针被const修饰,只在初始化时指向一个对象,且不能更改指向常量:不能被二次赋值constinta;intconsta;常量指针和指针常量constint*p;//*p不能被二次赋值int*constp;//p不能被二次指向constint*constp;//*p不能第二次赋值,指针p不......
  • Django模型层(一) (测试环境搭配 常见的十几种查询方法-ORM关键字 ORM执行SQL语句
    目录一、测试环境搭配切换数据库自带的sqlite3数据库对时间字段不敏感有时候会展示错乱,所以我们习惯切换成常见的数据库比如MySQLdjangoorm并不会自动帮你创建库,所以需要提前准备好!单独搭配测试环境单独测试django某个功能层,默认不允许单独测试某个py文件,如果想要测试......