java可以通过反射获取方法名的方法

时间:2014-03-03 12:23:13

标签: java

我知道Java可以使用Reflection.getMethod(...)方法获取方法对象,但该方法需要方法参数类型。但我不知道确切的参数类型.g。

byte a = 20;
System.out.println(a);

println方法没有重载方法println(Byte),但有println(Int)。 如何通过字节类型获取println方法? 另一个例子

class MyClass
{
}
class MyClass1 extends MyClass
{
}
class TestClass
{
    public static void method1(MyClass c)
    {
        ... ...
    }
}

TestClass.method1(new MyClass1())是正确的。但我可以通过参数类型MyClass1获取method1吗?

Class.getMethods会得到Class中的所有方法,太多了。我可以得到所有重载方法的同名吗?

1 个答案:

答案 0 :(得分:2)

java.lang.Class(参见JavaDoc)提供了两种查找方法的方法:

Method getMethod(String name, Class<?>... parameterTypes)

Method[] getMethods()

(和相应的getDeclaredMethod()变体)。

因此标准Java库中没有用于直接获取所需内容的API - 您需要获取所有方法,过滤具有正确名称的方法,然后检查参数类型。

或者您可以找到可以为您执行此操作的第三方库。例如,reflections库具有getMethodsMatchParams(Class<?>... types)方法。

jOOR library还提供了各种方法来查找具有“相似”签名的方法。