gpt4 book ai didi

java - 从 getDeclaredMethods 中查找具有实际类型的泛型方法

转载 作者:行者123 更新时间:2023-11-30 06:26:34 25 4
gpt4 key购买 nike

我的通用类如下所示:

interface X<Input, Output>
{
Output process(Input input);
}

class Y implements X<Integer, Float>
{
Float process(Integer input);
}

我使用 getDeclaredMethods 仅通过名称(故意不使用参数)在 Y 上查找进程。当我查看返回的 Method[] 时,进程出现了两次,Input=Object、Output=Object,然后是实际的实例化类型:Integer 和 Float。

请注意:我可以在 Method[] 中看到 1 个带有 Object、Object 的函数和 1 个带有我用来实例化的实际类型的函数,例如 Integer、Float。因此,我感兴趣的第二个函数可以从 Method[] 访问。

仅获取具有实际类型的方法的最佳方法是什么?

最佳答案

and then with the actual instantiation types.

那是不可能的。您应该会看到一个参数类型为 Object 的方法。也可以查看方法的泛型参数和返回类型,会发现它们都是类型变量(InputOutput都是类型变量)。

子类继承自该类并为类型参数使用特定类型参数的子类将具有两种方法:具有更具体参数和返回类型的方法,和一个桥接方法,带有原始类方法的参数和返回类型,以便覆盖它。如果您询问如何忽略桥接方法,只需检查它是否是桥接方法 (.isBridge())

关于java - 从 getDeclaredMethods 中查找具有实际类型的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14144888/

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