我知道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中的所有方法,太多了。我可以得到所有重载方法的同名吗?
答案 0 :(得分:2)
java.lang.Class
(参见JavaDoc)提供了两种查找方法的方法:
Method getMethod(String name, Class<?>... parameterTypes)
和
Method[] getMethods()
(和相应的getDeclaredMethod()
变体)。
因此标准Java库中没有用于直接获取所需内容的API - 您需要获取所有方法,过滤具有正确名称的方法,然后检查参数类型。
或者您可以找到可以为您执行此操作的第三方库。例如,reflections库具有getMethodsMatchParams(Class<?>... types)
方法。
jOOR library还提供了各种方法来查找具有“相似”签名的方法。