给定:
class A
{
public void m(List l) { ... }
}
假设我想使用反射来调用方法m
,并将一个ArrayList作为参数传递给m
:
List myList = new ArrayList();
A a = new A();
Method method = A.class.getMethod("m", new Class[] { myList.getClass() });
method.invoke(a, Object[] { myList });
第3行的getMethod
方法将抛出NoSuchMethodException
,因为myList的运行时类型是ArrayList,而不是List。
是否有一种通用的方法可以解决这个问题,而不需要了解类A的参数类型?
m2
,但也许我期望太多了? - Jonathon Faustm1
的唯一方法是尝试各种超类和接口的排列组合,这并不是一个很好的想法。 - Jonathon Faust