我有很多相互替换的函数,它们接受一个输入并返回一个输出,但在每种情况下,输出略有不同。所有这些函数都嵌入在单个包装类中。
我想通过将方法名称作为字符串传递来调用它们。我还想避免手动维护一个庞大的不需要的if语句列表:
if(methodName.equals("method1")
return method1(argument);
...
else if(methodName.equals("method176")
return method176(argument);
到目前为止,我已经弄清楚了如何动态调用方法,但仅限于静态方法:
try {
method = MyMainClass.class.getDeclaredMethod(methodName, MyArgumentClass.class);
ResultClass result = (ResultClass)method.invoke(null, myArgument);
return result;
}
catch(Exception e)
{
e.printStackTrace();
System.exit(1);
return null;
}
这对非静态方法是否可行?可以在类实例上调用函数,而不是静态类吗?