gpt4 book ai didi

java - 有没有办法通过反射识别 Java 16 记录的规范构造函数?

转载 作者:行者123 更新时间:2023-12-04 11:10:10 24 4
gpt4 key购买 nike

假设我有这样的记录(或任何其他记录):

record X(int i, int j) {
X(int i) {
this(i, 0);
}
X() {
this(0, 0);
}
X(String i, String j) {
this(Integer.parseInt(i), Integer.parseInt(j));
}
}
有没有办法找到这条记录的 canonical constructor通过反射,即在 RecordHeader 中隐式声明的反射?

最佳答案

尝试这个

static <T extends Record> Constructor<T> canonicalConstructorOfRecord(Class<T> recordClass)
throws NoSuchMethodException, SecurityException {
Class<?>[] componentTypes = Arrays.stream(recordClass.getRecordComponents())
.map(rc -> rc.getType())
.toArray(Class<?>[]::new);
return recordClass.getDeclaredConstructor(componentTypes);
}
Constructor<X> c = canonicalConstructorOfRecord(X.class);
X x = c.newInstance(1, 2);
System.out.println(x);
输出
X[i=1, j=2]

关于java - 有没有办法通过反射识别 Java 16 记录的规范构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67126109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com