以前我们定义类都是用class关键词,但从Java 16开始,我们将多一个关键词record,它也可以用来定义类。record关键词的引入,主要是为了提供一种更为简洁、紧凑的final类的定义方式。

下面就来具体了解record类的细节。配套视频教程:Java 16 新特性:使用record声明类

声明record类

声明record类的基础语法:

record range(int start, int end){}

我们知道class类可以在单独文件中生命,也可以在其他类中申明。那么record类也一样,它有这几种申明方式:

  1. 单独文件申明:
public record range(int start, int end){}
  1. 在类内部申明:
public class DidispaceTest {public record range(int start, int end){}
}
  1. 函数内申明:
public class DidispaceTest {public void test() {public record range(int start, int end){}}
}

record类详解

在知道了如何申明之后,你一定会想用record申明的就那么点元素,它到底会具备什么能力呢?

因为record关键词申明类主要是为了简化一些类的申明,所以它本质就是一类特殊的class,或者说是某一个模版的class。

record申明的类,具备这些特点:

  1. 它是一个final
  2. 自动实现equalshashCodetoString函数
  3. 成员变量均为public属性

所以,对于之前写的range类,它等价于一个这样的类:

public final class range{final int start;final int end;public range(int start, int end) {this.start = start;this.end = end;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;range range = (range) o;return start == range.start && end == range.end;}@Overridepublic int hashCode() {return Objects.hash(start, end);}@Overridepublic String toString() {return "range{" +"start=" + x +", end=" + y +'}';}public int start(){return start;}public int end(){return end;}
}

因为一些函数是隐藏的,在range定义的时候,我们看不到,所以我们可以尝试写这样一段测试代码来验证一下:

@Test
public void test() {range r = new range(100, 200);log.info(r.toString());range r2 = new range(100, 200);log.info(String.valueOf(r.equals(r2)));
}

定义成员函数

因为record申明的本质也是类,那么定义成员函数肯定也是可以的。

比如,我们可以这样在record类中定义成员函数:

record range(int start, int end){int distance(){return end - start;}
}

然后,就可以这样调用它:

range r = new range(100, 200);
r.distance();

如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,关注我,持续更新Java新特性专栏!

欢迎关注我的公众号:程序猿DD。前沿技术早知道,弯道超车有希望!积累超车资本,从关注DD开始!

Java 16 新特性:record类相关推荐

  1. Java | 详解 Java 16 新特性 Record 记录类

    1 概述 Java Record 是一种不变类,类似于 String,Integer.让我们看一个简单的例子. public record Data( int x, int y) 我们使用 recor ...

  2. Java 16 新特性介绍

    本文要点 Java 16 和即将发布的 Java 17 引入了大量特性和语言增强,有助于提高开发人员的生产力和应用程序性能 Java 16 Stream API 为常用的终端操作提供了很多新方法,有助 ...

  3. Java 8 新特性 Stream类的collect方法

    1.Collectors.toList():转换成List集合./ Collectors.toSet():转换成set集合. System.out.println(Stream.of("a& ...

  4. Java JDK8新特性Optional类

    Optional类 1.该类java.util包下,是不能被继承的泛型类即:public final class Optional<T>. 2.该类有两个私有属性: T value和 静态 ...

  5. Java 8 新特性 Optional 类学习,理解并应用。NullPointerException空值检测

  6. java strlen,跟妹妹聊到 Java 16 新特征,真香!

    Java 16新特性 2021年3月16日,甲骨文正式发布了Java 16!想当年JDK1.6新出的场景和历历在目,一瞬间,版本已经变成了16,真正体会了一把什么叫做光阴似箭,沧海桑田.虽然目前大部分 ...

  7. Java 8新特性:Optional类

    Java 8新特性:Optional类 在上一篇介绍Stream流式数据处理的文章中提到了Optional类,这是Java 8新增的一个类,用以解决程序中常见的NullPointerException ...

  8. 换掉 Java 8 Java 1718 新特性真香

    Java 17 Java 17 在 2021 年 9 月 14 日正式发布,Java 17 是一个长期支持(LTS)版本,这次更新共带来 14 个新功能. JEP 306:恢复始终严格的浮点语义 既然 ...

  9. 换掉 Java 8 !Java 1718 新特性真香

    今天来分享下 Java 17 和 Java 18 的一些新特性. Guide 这里也是真的建议有条件的小伙伴尝试一波 Java 17!不要死守 Java 8 了! Java 17 img Java 1 ...

最新文章

  1. 计算机笔试图形推理题,【笔记】教资笔试丨4分钟掌握信息处理以及逻辑判断!...
  2. python递归详解+汉诺塔小案例_汉诺塔,python递归实现解法步骤
  3. u盘安装Fedora18
  4. ICallbackEventHandler使用
  5. AI技术已达如此高度:去码、上色6到飞起
  6. 2020CCPC(长春) - Strange Memory(树上启发式合并+位运算)
  7. RGB(FFFFFF)转255:255:255
  8. jsf集成spring_JSF 2,PrimeFaces 3,Spring 3和Hibernate 4集成项目
  9. 开源无人机_开源无人机,欧洲开源等等
  10. UI设计实用素材|扁平化设计的模板
  11. UVA - 10129 Play on Words(欧拉回路+并查集)
  12. css-a:visited
  13. java后端AppV3版本微信支付CV大法2021-11-12
  14. Jeff Dean:谷歌大脑背后的“大脑” | AI名人堂
  15. 金桔智能门锁实现人证房三统一原理
  16. 【实用软件】电脑wifi密码查看器
  17. 转:战略思维的五个要素,你都具备了吗?
  18. 如何搭建Hadoop分布式环境?我来教你怎么做![内含测试小案例]
  19. oracle+clod+和bolb,Azure存储Blob类型(CloudBlobContainer,CloudBlobClient等)和线程安全
  20. 修复 yum 坏掉 报错There was a problem importing one of the Python modules 教程

热门文章

  1. Android chrisbanes-PhotoView 使用案例
  2. IB/A-Level/美国+AP三大主流课程有哪些国际学校?
  3. Flask框架详细教程
  4. 每周一篇 文献阅读—pape9 (用于单图像去雾的特征融合注意网络FFA-Net)
  5. LT9211芯片资料分享
  6. c语言用赫夫曼编码压缩文件,用哈夫曼编码C语言实现文件压缩
  7. 软阈值函数作用图matlab,软阈值(Soft Thresholding)函数解读
  8. 关闭tcp连接时有时发送FIN有时发送RST
  9. ArcBlock ⑪ 月报 | 无惧寒冬 ABT 2019 区块链远征启程
  10. 支付宝七(商户会员卡之发放卡券)