记录是类的语法糖吗?

问题描述 投票:0回答:1

我最近发现了 Java 记录,了解它们的存在和用途真是太神奇了。

但是,我开始怀疑它们本质上是否只是幕后的类

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

java record
1个回答
3
投票

在底层,它仍然会创建一个类(派生自

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.