Java反射匹配形式参数列表和实际参数列表
假设我有一个这样的类Foo
public class Foo {
public void setParameter(String name, Object value) {
// ...
}
}
我想通过反射得到setParameter
方法
问题是,在我的代码中,当我需要得到这个方法时,我只知道实际的参数。我建立了一个小方法,可以给我实际参数的Class
数组。不幸的是,从实际参数{Class
数组与形式参数{getDeclaredMethod
的Class
数组NoSuchMethodException
你知道有任何库或代码片段可以帮助匹配该方法吗
# 1 楼答案
在找到要调用的方法时,您可能需要更聪明一点。一个选项是从^{} 遍历每个方法,首先检查方法的名称,看它是否是您想要调用的方法,然后检查实际参数的数量是否与形式参数的数量匹配,最后,如果这两个都是真的,遍历其实际参数,并检查参数类是否可从形式参数类赋值
然而,有一个问题是,如果你有这些方法会发生什么:
因为两者都将符合这个测试
我不知道我头顶上有哪一个图书馆能以轻量级的方式处理这个问题。尽管大多数依赖注入框架(Spring、Guice)都会根据自己的需要对其提供一些支持,而且可能值得研究它们是如何工作的
乔恩·斯基特的回答here有一个例子说明了我要解释的内容