java如何查看调用记录

JEP 359 (可在JDK 14中用作预览功能)将记录引入Java。 记录是对普通数据聚合建模的简单方法。

一个简单的范围记录如下所示:

 record Range( int from, int to) {} 

记录定义实际上与具有以下内容的最终类相同:

  • 不变的领域
  • 公共访问者
  • 构造函数
  • equals(),hashCode()和toString()的实现

因此,我们可以像这样使用记录:

 Range range = new Range( 1 , 5 );  int from = range.from(); // 1  int to = range.to(); // 5  String toString = range.toString(); // Range[from=1, to=5]  boolean equals = range.equals( new Range( 1 , 5 )); // true 

请注意,访问器的名称是from()和to(),而不是getFrom()和getTo()。

构造函数呢?

假设我们要向Record中添加一个构造函数以执行一些验证:

 record Range( int from, int to) { public Range( int from, int to) { if (from > to) { throw new IllegalArgumentException(); } this .from = from; this .to = to; }  } 

这样可以避免创建无效的Range实例。 但是,我们不得不多次写下from和to字段来执行简单的验证,这有点令人讨厌。

为了避免这种情况,我们可以使用一种特殊形式的记录构造函数,称为紧凑构造函数。 这使我们可以跳过定义构造函数参数并将构造函数参数分配给字段的操作。 看起来像这样:

 record Range( int from, int to) { public Range { if (from > to) { throw new IllegalArgumentException(); } }  } 

结果的工作原理与先前的构造函数完全相同。

定制方法

我们还可以添加新方法并覆盖记录中的现有方法。

例如:

 record Range( int from, int to) { public int getDistance() { return to - from; } @Override public String toString() { return String.format( "Range[from: %s, to: %s, distance: %s]" , from, to, getDistance()); }  } 

为什么记录有用?

如果我们需要一个简单的类来传递数据,记录只会减少我们必须编写的代码量。 用例示例是方法,复合映射键或数据传输对象的多个返回值。

假设要在集合中找到最小值和最大值。 使用记录,您可以只用一行创建两个值的返回类型:

 record MinMax( int min, int max) {}  static MinMax minMax(Collection<Integer> numbers) { ... } 

(是的,您可以使用单独的方法来找到最小值和最大值。但是,然后您必须对集合进行两次迭代)

记录还提供了一种创建复合Map键的简便方法:

 record NameAndDayOfBirth(String name, LocalDate dob) {}  private Map<NameAndDayOfBirth, Person> entries = ...; 

摘要

记录提供了一种不太冗长的方式来创建简单的数据持有人。 常见的用例是多个返回值,复合映射键或数据传输对象。 有关记录的更多背景信息,我推荐Brian Goetz撰写的这篇文章 。

您可以在GitHub上找到示例代码。

翻译自: https://www.javacodegeeks.com/2020/05/looking-at-java-records.html

java如何查看调用记录

java如何查看调用记录_查看Java记录相关推荐

  1. java进程里面调用方法_在java里面调用CUI程序的方法

    在java里面调用CUI程序的方法推荐查看本文HTML版本 在java里面调用CUI程序的方法 问题描述: 该函数在win平台上面调用不是很成功,GUI会可以调出来,但可能和屏蔽调其中的一些用 ...

  2. java方法的调用类型转换_关于java:实现接口,方法调用和类型转换的方法

    考虑以下代码 interface MyInterface{ void method(String s);// if we write static modifier we have compile e ...

  3. java主类调用数组_用java编写在主函数中调用数组

    importjava.util.Scanner;publicclassja{publicstaticvoidmain(Stringargs[]){Scannerscanner=newScanner(S ...

  4. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  5. java 查看内存占用_查看JVM内存使用状况

    1.jps:查看本地正在运行的java进程和进程ID(pid) 2.jinfo pid,查看指定pid的所有JVM信息 1)jinfo -flags pid 查询虚拟机运行参数信息. 2)jinfo ...

  6. java内存分析详解_深入java内存查看与分析详解

    1:gc日志输出在jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimestamps -XX:+PrintGCApplicationS ...

  7. java中国象棋网络对弈_基于JAVA的中国象棋对弈系统(附答辩记录)

    基于JAVA的中国象棋对弈系统(附答辩记录)(包含选题审批表,任务书,开题报告,中期报告,毕业论文7100字,程序) 摘  要:本毕业设计采用Java实现中国象棋对弈,可以由两个玩家操作来进行.其图形 ...

  8. java主程序怎样调用子程序_存过和函数以及在Java程序中的调用

    存储过程,函数都是数据库的对象. 创建和调用 存储在数据库中的子程序,是由plsql语言写的,完成特定功能的程序. 函数可以返回值,存过不能返回值.除此之外,一致. create procedure ...

  9. java设置按钮调用问题_按钮相关问题:尝试在空对象引用上调用虚方法

    我在Android中遇到了这个问题 . 01-30 20:32:57.415 24227-24227 / edu.gatech.seclass.vcipher E / AndroidRuntime:F ...

最新文章

  1. LeetCode-笔记-45.跳跃游戏II-贪心算法
  2. 易宝典文章——如何在Exchange Server 2010 SP1下将用户邮箱导出到PST中
  3. 用小括号表达一个长字符串
  4. P1020 导弹拦截(最长不上升序列+二分)
  5. 软考计算机基础:存储系统
  6. selenium java api_selenium_java常用API操作
  7. php根据某个字段合并两个二维数组,php根据指定字段匹配查找合并两个二维数组...
  8. Java魔法堂:JVM的运行模式
  9. 要么战胜,要么战死,绝不投降
  10. volatile一题
  11. JUnit5 + JMockit 知识整理
  12. Html光标跟随粒子特效
  13. 把图标变成圆形的html_css3 图片圆形显示 如何CSS将正方形图片显示为圆形图片布局...
  14. VMware克隆虚拟机后修改UUID、MAC地址、IP和主机名
  15. Bumped! (最短路)
  16. 【机器学习】李宏毅 - 02 回归
  17. 「隐藏功能」你必须知道的6个iOS小技巧...
  18. js计算出来的文件md5值跟java计算出来的不一致
  19. Android自定义一个View实现运动的小人
  20. 让思考成为一种习惯:今年,我大四了

热门文章

  1. H - Holy Grail
  2. CodeForces:54
  3. 9.27模拟:至暗时刻
  4. P5012-水の数列【并查集,RMQ】
  5. P3441-[POI2006]MET-Subway【图论,贪心】
  6. ABC182——F - Valid payments Editorial
  7. 【DP】【树状数组】免费馅饼(luogu 7302/金牌导航 数据结构优化DP-4)
  8. 【二分】Distinct
  9. codeforces D.MADMAX 动态规划、记忆化搜索
  10. Spark入门(十六)之分组求TOP N最小值