Java Record

Java Record

  • 1.Java Record的作用与特性
  • 2.Java Record 如何使用
    • 创建和使用Record
    • Record 的 Method
    • Record 的构造方法
    • Record 的 extends 和 implements
  • 3.Record 和 Lombok
  • 4.Record类和java.lang.Class类
  • 5.instanceof判断Record类型
  • 6.Local Record与嵌套Record


  • Java14 中预览(Java16 release) 的新特性 Record,在 Java 中,Record 是一种特殊类型的类。可用来创建不可变类,语法简短。Jackson2.12 支持 Record 类。
  • Record 用来创建不可变的对象,同时减少了样板代码。

1.Java Record的作用与特性

  • 1、带有全部参数的构造方法。√
  • 2、pulic 访问器。√
  • 3、生成 toString(),hashCode(),equals()方法。√
  • 4、无 set、get 方法,没有遵循 Bean 命名规范。√
  • 5、final 类,Record类不能被继承,Record 为隐士的 final 类。除此之外与普通类一样。√
  • 6、不可变类,通过构造方法创建 Record。√
  • 7、final 属性,不可修改。√
  • 8、static 类,不能声明实例属性,能声明 static 成员。√
  • 9、abstract 类 java.lang.Record 是所有 Record 的父类。√
  • 10、Record 类能够实现 java.io.Serializable 序列化和反序列化。√
  • 11、Record 支持泛型,例如 record Gif (T t){}。√

2.Java Record 如何使用

创建和使用Record

  • IDEA 新建 Class,直接选择 Record。
    在这里插入图片描述
  • 创建 Record 对象
    public record User (String name, Integer age) {
    }
    
  • 使用 Record 类
    @SpringBootTest
    public class Test {@org.junit.jupiter.api.Testpublic void test() {//创建 User record 对象User user = new User("lisi", 21);//调用 record 的 public 访问器和 toString() 方法System.out.println(user.toString() + "\n" + user.name() + "\t" + user.age());}
    }
    

Record 的 Method

  • Record 类和普通的 Java Class 一样创建和调用 Instance Methodstatic Method

Record 的构造方法

  • 我们可以在 Record 中添加构造方法,有三种类型的构造方法分别是

    • 紧凑型构造方法没有任何参数,甚至没有括号。
    • 规范构造方法是以所有成员作为参数。
    • 定制构造方法是自定义参数个数。
  • 紧凑和定制构造方法

    public record User(String name, Integer age) {public User {System.out.println("紧凑型构造方法");}public User(String name) {this(name, null);}
    }
    
  • 编译后:注意紧凑构造方法和规范构造方法合并了

    public record User(String name, Integer age) {public User(String name, Integer age) {System.out.println("紧凑型构造方法");this.name = name;this.age = age;}public User(String name) {this(name, (Integer)null);}public String name() {return this.name;}public Integer age() {return this.age;}
    }
    

Record 的 extends 和 implements

  • Java Record 可以与普通类一样实现接口,重写接口中的方法。但是 Java Record 不能继承其他的类。

3.Record 和 Lombok

  • Java Record 是创建不可变类且减少样板代码的好方法。Lombok 是一种减少样板代码的工具。两者表面上有重叠部分,但是实际上两者是不同用途的工具。
    • Lombok 提供语法的便利性,通常预装一些代码模板,根据加入到类中的注解自动执行代码模板。这样的库存粹是为了方便实现 POJO 类。通过预编译代码。将代码的模板加入到 class 中。
    • Java Record 是语言级别的,一种语义特性,为了建模而用,数据聚合。简单说就是提供了通用的数据类,充当“数据载体”,用于在类和应用程序之间进行数据传输。

4.Record类和java.lang.Class类

  • Record类和java.lang.Class类有关的两个方法:
    boolean isRecord();  //判断一个类是否是 Record 类型。
    RecordComponent[] getRecordComponents(); //Record的数组,表示此记录类的所有记录组件,我目前的了解应该是有那些属性 。
    

5.instanceof判断Record类型

  • instanceof 能够与 Java Record 一起使用。编译器指导记录组件的确切数量和类型。并且 Java Record 能够自动处理 null
    public boolean isEligible(Object obj) {if(obj instanceof User user) {return user.age > 20;}//注意下面两种方式是 JDK19 才引入的if(obj instanceof User(String name ,Integer age) user) {return user.age > 20;}if(obj instanceof User(String name ,Integer age)) {return age > 20;}return false;
    }
    

6.Local Record与嵌套Record

  • Record 可以作为局部对象使用。多个 Record 可以组合定义,一个 Record 能够包含其他的 Record

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637653.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习-优化策略

1.使用众所周知的梯度下降法。 (1).批量梯度下降法:每次参数更新使用所有的样本(2).随机梯度下降法:每次参数更新只使用一次样本(3).小批量梯度下降法:每次参数更新使用…

20.Unity飞机大战游戏

1任务:使背景图动起来 2任务:飞机换帧动画 3任务:让飞机发射子弹 4任务:敌机出现 5任务:控制飞机 6任务:游戏碰撞逻辑 7任务:另外两种类型的敌机 8任务:拾取奖励物品换枪 9…

强固型工业电脑在码头智能闸口、OCR(箱号识别)、集装箱卡车车载电脑行业应用

集装箱卡车车载电脑应用 背景介绍 针对码头集装箱卡车的调度运用, 结合码头TOS系统设计出了各种平台的车载电脑(VT系列)和车载LED显示屏(VLD系列),同时提供各种安装支架,把车载电脑固定到狭小的驾驶室中;同时提供了各种天线选择(…

【Linux】NFS网络文件系统搭建

一、服务端配置 #软件包安装 [roothadoop01 ~]# yum install rpcbind nfs-utils.x86_64 -y [roothadoop01 ~]# mkdir /share#配置文件修改 #格式为 共享资源路径 [主机地址] [选项] # [roothadoop01 ~]# vi /etc/exports /share 192.168.10.0/24(rw,sync,no_root_squash) #…

VBA技术资料MF144:将PDF首页作为对象插入工作表

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

神经网络中的神经元和激活函数介绍

文章目录 1、什么是人工神经网络 2、什么是神经元 3、什么是激活函数 线性激活函数 Sigmoid激活函数 双曲正切激活函数 修正线性单元(ReLU)激活函数 Leaky ReLU激活函数 Softmax激活函数 1、什么是人工神经网络 神经网络能够利用多层神经元学习复杂的模…

AlDente Pro for mac最新激活版:电池长续航软件

AlDente Pro是一款专为Mac用户设计的电池管理工具,旨在提供电池安全和健康管理的一站式解决方案。它具备实时监控电池状态的功能,让用户随时了解电池的电量、充电次数、健康状态等信息。 AlDente Pro for mac最新激活版下载 同时,AlDente Pro…

使用Python进行云计算:AWS、Azure、和Google Cloud的比较

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行云计算:AWS、Azure、和Google Cloud的比较 随着云计算的普及&am…

【高校科研前沿】东北地理所孙敬轩博士为一作在《中国科学:地球科学(中英文版)》发文:气候变化下东北地区农业绿水安全风险评估

目录 01 文章简介 02 研究内容 03 文章引用 04 期刊简介 01 文章简介 论文名称:Risk assessment of agricultural green water security in Northeast China under climate change(气候变化下东北地区农业绿水安全风险评估) 第一作者及…

Git 新手快速入门教程

一、什么是 Git 1. 何为版本控制 版本控制是一种记录文件变化的系统,可以跟踪文件的修改历史,并允许用户在不同版本之间进行比较、恢复或合并。它主要用于软件开发过程中管理代码的变更,但也可以应用于任何需要跟踪文件变更的场景。 版本控…

经典机器学习算法——决策树

优质博文:IT-BLOG-CN 树模型是机器学习中最常用的一类模型,包括随机森林、AdaBoost、GBDT(XGBoost和Lightgbm)等,基本原理都是通过集成弱学习器的即式来进一步提升准确度。这里的弱学习器包括线性模型和决策树模型&…

注意力机制中多层的作用

1.多层的作用 在注意力机制中,多层的作用通常指的是将注意力机制堆叠在多个层上,这在深度学习模型中被称为“深度”或“多层”注意力网络。这种多层结构的作用和实现过程如下: 1. **逐层抽象**:每一层都可以捕捉到输入数据的不同…