gpt4 book ai didi

java - 使用反射检索通用类型实例中使用的类

转载 作者:行者123 更新时间:2023-12-02 13:18:09 25 4
gpt4 key购买 nike

假设有一个类型 Pair<K,V>在您的包裹中声明。给定一个对象实例:

 Pair<Integer, Integer> obj = new Pair<>(1,23);

我想检索类型参数 IntegerInteger到其中KV分别相关联。顺便说一句,似乎使用 Java 标准反射我无法使用 Java 中的实例访问实际的类。

 TypeVariable<? extends Class<?>>[] parameters = obj.getClass().getTypeParameters();

我没有设法使用这些参数提取所需的信息。我开始怀疑,也许类型信息只在编译时保留,而在运行时实际的类型参数信息被删除。

最佳答案

如果您只有一个实例,如您所举例:Pair<Integer, Integer> pair = new Pair<>(1,23) ,无法获取静态泛型类型,因为该信息在运行时会丢失。

如果,另一方面,Pair<Integer, String>是字段的类型、方法返回类型、方法参数的类型,或者如果泛型类型参数来自父类(super class),则可以提取静态泛型类型。

检查my answer here有关在这些情况下提取泛型类型的示例。

除此之外,您只能在运行时检查值的动态类型,如Yahya所述。 .

关于java - 使用反射检索通用类型实例中使用的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700831/

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