如何在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
相关产品推荐
相关产品推荐

