gpt4 book ai didi

java - 使用 Java 反射发现通用参数实例化

转载 作者:行者123 更新时间:2023-11-30 05:54:42 25 4
gpt4 key购买 nike

考虑以下场景:

class A<T> {}
class B extends A<Integer> {}

Java中如何通过反射得知BT类型变量被实例化为Integer

最佳答案

你可以使用

Type type = B.class.getGenericSuperclass();

// TODO: check with instanceof first?
ParameterizedType parameterized = (ParameterizedType) type;

// TODO: Check that there *are* type arguments
Type firstTypeArgument = parameterized.getActualTypeArguments()[0];

简短但完整的示例:

import java.lang.reflect.*;

class A<T> {}
class B extends A<Integer> {}

public class Test {
public static void main(String[] args) {
Type type = B.class.getGenericSuperclass();
ParameterizedType parameterized = (ParameterizedType) type;
// Prints class java.lang.Integer
System.out.println(parameterized.getActualTypeArguments()[0]);
}
}

关于java - 使用 Java 反射发现通用参数实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062413/

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