说有一个名为
doTask
的重载方法:public class Game {
void doTask(Joker joker);
void doTask(Batman batman, Robin robin);
}
如果已知方法的名称("doTask"
)以及一个元素数量和类型未知的参数数组,我想调用正确的方法。
通常需要至少三个步骤:
1. 找到参数的数量和类型,并创建一个数组 Class[] myTypes
.
2. 确定正确的重载方法,即 Method rightMethod = game.getClass().getMethod("doTask", myTypes);
3. 调用该方法: rightMethod.invoke(paramArray)
.
是否存在一种方法,可以让Java反射自动识别要使用的正确重载方法,并避免执行步骤1和2? 我认为理想情况下,这将像这样:
Library.invoke("doTask", paramArray);
doTask()
并让实现决定如何处理它们是否可行? - lupzdoTask()
方法已经被编写(并被其他代码使用)。我正在编写一个包装函数myFunc(Object... paramArray)
,加入额外的业务逻辑,以调用正确的doTask()
。 - flow2kdoTask()
方法编写单独的包装器。但这将复制大量业务逻辑代码,并使其难以维护。 - flow2k