Fra*_*ank 2 java generics reflection
我有通用类,看起来像:
interface X<Input, Output>
{
Output process(Input input);
}
class Y implements X<Integer, Float>
{
Float process(Integer input);
}
Run Code Online (Sandbox Code Playgroud)
我使用getDeclaredMethods来查找Y上的进程只是用它的名字(而不是有意的参数).当我查看返回Method []时,进程显示两次,使用Input = Object,Output = Object,然后使用实际的实例化类型:Integer和Float.
请注意:我可以在Method []和1函数中看到1个带Object,Object的函数,其中包含我用来实例化的实际类型,如Integer,Float.所以,我感兴趣的第二个函数可以从Method []访问.
只获得实际类型的方法的最佳方法是什么?
然后使用实际的实例化类型.
那是不可能的.您应该看到一个参数类型为的方法Object.您还可以查看方法的泛型参数和返回类型,您会发现它们都是类型变量(Input并且Output是类型变量).
使用类型参数的特定类型参数从其继承的此类的子类将具有两个方法:具有更具体的参数和返回类型的方法,以及具有原始类的方法的参数和返回类型的桥接方法,按顺序覆盖它.如果您问如何忽略桥接方法,只需检查它是否是桥接方法(.isBridge())
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |