对于Java代码,我需要为数字中的某些数字调用函数。实际上,如果我的电话号码是464,则必须调用名为assert4和assert6的函数。希望您能理解。但是,如果我是对的,我们不能将字符串和变量连接起来以具有函数的名称并执行它。例如 :

for (int i = 0; i < number.length(); i++) {
    assert + i + (); // For example executing the function assert4
}


所以我看不到我该怎么做。感谢帮助 !

最佳答案

您可以使用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(); } });

10-08 01:28