Java:如何调用名称存储在字符串变量中的函数

Sha*_*Din 3 java reflection method-invocation

我有一个存储在变量中的泛型字符串String func = "validate";,我想调用该名称的函数,即我需要调用validate()函数.
我的意思是说我会将变量传递给某个函数,
public void callFunc(String func){
....
}
所以上面的函数应该调用相应的函数,函数名作为参数传递给callfunc().

Jon*_*eet 15

可以使用反射来执行此操作,例如

Method method = getClass().getMethod(func);
// TODO: Validation
method.invoke(this);
Run Code Online (Sandbox Code Playgroud)

假设你想要调用方法this,当然,这是一个实例方法.Class.getMethod有关Method更多详细信息,请查看相关方法及其相关方法.您可能需要getDeclaredMethod,而您可能需要使其可访问.

如果可能的话,我会想看你是否能想出一种避免这种情况的方法 - 反思会很快变得混乱.值得退后一步并考虑这是否是最好的设计.如果您向我们提供更多详细信息,我们可能会建议替代方案.