我在读关于official documents号公路上的Java唱片

在文章的最后,作者说:

The class java.lang.Class has two methods related to record classes:
  • RecordComponent[]getRecordComponents():返回一组java.lang.refect.RecordComponent对象,这些对象对应于Record类的组件.

  • Boolean isRecord():类似于isEnum(),不同之处在于如果类被声明为记录类,则返回TRUE.

所以,我试着找一些指南或指南来帮助我更清楚地理解这些概念,但根据我的理解,我没有找到任何有用的东西

我试着做一个这样的例子,但不起作用

public record HelloWorld(String name) {

}
...
...
public class Main {
    public static void main(String[] args) {
        HelloWorld h = new HelloWorld("Manh");
        System.out.println(h);

        System.out.println(h.isRecord());
//        RecordComponent
    }
}

你能提供一些例子来帮助我理解这两个API吗?

推荐答案

这些方法用于Class对象,即本例中的HelloWorld.class对象.

record HelloWorld(String name, int n) {
}
public class Main {
    public static void main(String[] args) {
        var clazz = HelloWorld.class;
        System.out.println(clazz.isRecord()); // true
        for (var comp : clazz.getRecordComponents()) {
            System.out.println(comp.getName() + " " + comp.getType());
        }
        /*
        name class java.lang.String
        n int
        */
    }
}

Java相关问答推荐

Selenium Java:无法访问IFRAME内部的元素

使用log 4j2格式的Hibernate 显示SQL日志(log)

Java字符串常数池困惑

Java Streams在矩阵遍历中的性能影响

如何在Docker容器中使用wireock—Webhooks阻止请求?

Java:根据4象限中添加的行数均匀分布行的公式

Mat. n_Delete()和Mat. n_release的区别

无法在org. openjfx:javafx—fxml:21的下列变体之间进行 Select

对于几乎不涉及逻辑的请求,您是否应该使用命令模式?

R.id.main给我一个红色错误,无法解析MainActivity.java中的符号main

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

Spring @Value default无法计算表达式

匹配一组字符或另一组字符

Cordova Android Gradle内部版本组件不兼容

Domino中不同的java.Protocol.handler.pkgs设置在XPages Java中导致错误

FETCH类型设置为LAZY,但它仍会发送第二个请求

Java在操作多个属性和锁定锁对象时使用同步和易失性

在线程Java中调用Interrupt()之后调用Join()

如果c不为null,Arrays.sort(T[]a,Comparator<;?super T>;c)是否会引发ClassCastException?

为什么child-pom会创建一个新版本