我想在Java7中构建一个动态方法调用程序。
我可以使用以下代码来实现它。
Method method = klazz.getMethod(methodName, argsType);
method.invoke(klazz.getConstructors()[0].newInstance(), args);
但是,argsType只支持Class []类型,这意味着泛型在这里不能很好地工作。有没有其他反映方法可以实现这一目标?
谢谢。
答案 0 :(得分:0)
对于args,您可以尝试使用新的Object [} {}表示法,我现在无法尝试,但使用对象数组可以传递所有参数。
答案 1 :(得分:0)
编译器会删除通用信息。这意味着在运行时,所有通用类型都被视为Object
(例如,所有List<String>
变为List<Object>
),因此您所要求的是不可能的。
他们在Java std lib中绕过这种方式的方法是提供一个可以在运行时指定类型的类arg。例如,Collections.checkedList()接收一个Class arg,它指定要创建的列表的Generic类型