通过变量字符串名称和变量参数调用函数

时间:2015-09-08 12:39:20

标签: java android function methods reflection

场景:我有一个功能列表,例如:

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方法。

0 个答案:

没有答案