gpt4 book ai didi

java - 获取 super 接口(interface)的类型参数

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

我有:

interface I<T> {}

和:
interface I1 extends I<Clazz1> {}

我还有 I2、I3 等扩展 I 、I 等。

我不知道运行时的 Clazz1。我怎么能得到这些信息?

我试过:
subInterface1.getInterfaces()[0].getTypeParameters()[0]

但in只知道T,不知道Clazz1。

最佳答案

当你这样做

subInterface1.getInterfaces()[0].getTypeParameters()[0]

您将获得 Class 的第一个正式类型参数表示接口(interface)的对象 I ,这确实是变量 T .相反,您需要使用
subInterface1.getGenericInterfaces()[0]

获取 Type表示 I 的特定实例化的对象已由 I1 扩展.这将是 ParameterizedType 的一个实例, 所以你可以转换成那个然后使用 getRawType()getActualTypeArguments()提取原始类型 I和实际类型参数值 Clazz1分别。注意 getActualTypeArguments() 的返回类型是 Type[]而不是 Class[]因为实际的参数可能不是具体的类,它们可能是变量或通配符(或者实际上是其他参数化类型,例如 List<List<String>> )。

关于java - 获取 super 接口(interface)的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359570/

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