对于我在Java中的代码我需要为数字中的某些数字调用函数。事实上,如果我的数字是464,我必须调用名为assert4和assert6的函数。我希望你能理解。但是,如果我是对的,我们不能连接一个字符串和一个变量来获得一个函数的名称并执行它。例如:
for (int i = 0; i < number.length(); i++) {
assert + i + (); // For example executing the function assert4
}
所以我无法理解如何做到这一点。感谢帮助 !
答案 0 :(得分:2)
你可以使用像YourClass.class.getMethod(...).invoke(...)
这样的反射来做到这一点。 (例如,请参阅this question。)
然而,这有点代码味道,我鼓励你做类似
的事情Map<Integer, Runnable> methods = new HashMap<>();
methods.put(464, YourClass::assert464);
...
for (int i = 0; i < number.length(); i++) {
methods.get(i).run();
}
如果您使用的是Java 7或更早版本,则等效于
methods.put(464, new Runnable() { public void run() { assert464(); } });
答案 1 :(得分:0)
您可以使用反射API使用String名称调用方法。
这里有一些关于如何开始的教程: