可能的重复:
在 Java 和 C 中在运行时调用名为“string”的方法

我需要能够调用一个函数,但函数名称存储在一个变量中,这可能吗?例如:

public void foo ()
{
     //code here
}

public void bar ()
{
     //code here
}

String functionName = "foo";

// 我需要根据 functionName 来调用该函数

任何帮助都会很棒,谢谢

有帮助吗?

解决方案

是的,您可以使用反射。然而,也请考虑 《有效的 Java》第二版,第 53 条:更喜欢接口而不是反射. 。如果可能的话,请使用接口。在一般应用程序代码中很少真正需要反射。

也可以看看

相关问题

其他提示

通过反射很容易完成。一些例子 这里这里.

代码的主要部分是

String aMethod = "myMethod";

Object iClass = thisClass.newInstance();
// get the method
Method thisMethod = thisClass.getDeclaredMethod(aMethod, params);
// call the method
thisMethod.invoke(iClass, paramsObj);

使用反射。

下面是一个例如

使用的反射 API。是这样的:

    Method method = getClass().getDeclaredMethod(functionName);
    method.invoke(this);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top