You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中使用isRecord()与RecordComponent[]?

Java Record相关API(isRecord()和getRecordComponents())使用示例

你代码里的核心问题是:isRecord()是java.lang.Class类的方法,不能直接用记录实例调用,必须先获取类对应的Class对象再调用。下面是完整的正确使用示例:

完整可运行代码

import java.lang.reflect.RecordComponent;

// 定义一个包含多组件的记录类
public record HelloWorld(String name, int age) {
}

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

        // 获取HelloWorld对应的Class对象
        Class<?> helloWorldClass = h.getClass();

        // 1. 使用isRecord()判断是否为记录类
        boolean isRecordType = helloWorldClass.isRecord();
        System.out.println("HelloWorld是否是记录类: " + isRecordType);

        // 2. 使用getRecordComponents()获取记录组件详情
        RecordComponent[] components = helloWorldClass.getRecordComponents();
        System.out.println("\n记录组件详细信息:");
        for (RecordComponent component : components) {
            // 输出组件名称、类型
            System.out.printf("组件名称: %s, 类型: %s%n",
                    component.getName(), component.getType().getSimpleName());
            // 获取记录类自动生成的访问器方法(比如name()、age())
            System.out.printf("对应访问器方法: %s()%n", component.getAccessor().getName());
        }
    }
}

代码说明

  • isRecord():通过Class对象调用,返回布尔值,用于判定当前类是否为Java记录类。
  • getRecordComponents():返回RecordComponent数组,每个元素对应记录类中声明的一个组件。通过RecordComponent可以获取组件的名称、类型,以及记录类自动生成的访问器方法(和组件名同名的无参方法)。

运行输出

HelloWorld[name=Manh, age=25]
HelloWorld是否是记录类: true

记录组件详细信息:
组件名称: name, 类型: String
对应访问器方法: name()
组件名称: age, 类型: int
对应访问器方法: age()

内容的提问来源于stack exchange,提问作者user22844207

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:45:57