我最近发现了Java records,了解它们的存在和用途是令人惊讶的.

然而,我开始怀疑,它们本质上是否只是幕后的课程.

这是否意味着在编译过程中,它们会被转换为一个显式类,带有最终的私有字段、公共构造函数和必要的getter?

推荐答案

在幕后,它仍然会创建一个类(派生自java.lang.Record).

你可以自己试一试:

// test.java
record Test(int foo, String bar) {}

当您用javac test.java编译这个代码,并用javap Test再次反汇编它时,您将得到以下代码:

final class Test extends java.lang.Record {
  Test(int, java.lang.String);
  public final java.lang.String toString();
  public final int hashCode();
  public final boolean equals(java.lang.Object);
  public int foo();
  public java.lang.String bar();
}

Java相关问答推荐

将偶数元素移动到数组的前面,同时保持相对顺序

日食IDE 2024-03在Ubuntu下崩溃,导致hr_err_pid.log

当切换javaFX场景时,stage的大小正在Minimize

CAMEL 4中的SAXParseException

有关手动创建的包的问题

Exe4j创建的应用程序无法再固定在任务栏Windows 11上

RESTful框架类字段是安全的还是不安全的

Java流传输一个列表并创建单个对象

更新AWS凭据

Spring Boot&;Docker:无法执行目标org.springframework.boot:spring-boot-maven-plugin:3.2.0:build-image

将JSON字符串转换为Java类

Java 11 HttpCookie.parse在解析包含JSON的Cookie时引发IlLegalArgumentException

在JDK Flight Recorder中只记录单个线程

在应用程序运行时更改LookAndFeel

Maven-Dependency-Plugin 3.6.+开始查找在依赖关系:分析目标期间找到的新的使用的未声明依赖关系

活泼的一次判断成语,结果中等

如何在Struts2中使用操作类中的结果注释重定向到不同的命名空间

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

谷歌应用引擎本地服务器赢得';t在eclipse上运行

验证没有';t work on Hibernate Entity';s字段