场景:我有一个功能列表,例如:
function1(int a, int b)
function2(String a)
function3(String a, String a)
...
我需要能够通过字符串选择和调用函数,同时还具有不同的参数。
String functionName = "function1"
或
String functionName = "function2"
然后
callFunction(functionName) - (somehow adding parameters too
)
我可以使用:
来做到这一点if(functionName == "function1"){
function1(int a, int b);
}else if(functionName == "function2"){
function2(String a)
}...
但是当我有很多功能时,这似乎并不高效。
我尝试过使用反射:
String methodName = "thisMethod";
Method newMethod = null;
try {
newMethod = FormActions.class.getMethod(methodName, String.class);
} catch (e) {}
try {
newMethod.invoke(this, "THIS IS A STRING");
} catch (e) {}
这很好,因为我可以打电话:
public void thisMethod(String text ){
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
但是如果methodName设置为“otherMethod”,它接受一个int = otherMethod(int a)
然后这将不再有效。
有没有一种好方法可以做到这一点,或者我应该使用第一个if-else / switch方法。