使用动态字符串来处理函数?

时间:2012-07-31 13:03:09

标签: java android string function void

我想在我的app上保存一些工作,是否可以获取字符串,例如“level1”然后使用相应的函数,这将是level1();?我的主要观点是不要制作一个巨大的switch-case语句,而只是在存储类中创建一些级别的函数,并且每当你升级时,字符串将变为“level”+ number其中number是int,所以让我们说现在你处于10级,运行的函数是level10();

我希望我能清楚地解释一下......如果不是抱歉..希望你能得到这个想法!

谢谢!

4 个答案:

答案 0 :(得分:3)

我相信您希望在运行时使用其名称作为字符串调用方法。

你可以通过反思来做到这一点。

Class.getMethod(String methodName, Class... parameterTypes)

答案 1 :(得分:2)

不要在方法名称方面考虑这一点,除非你想要反思(你不想这样做,而且没有必要)。

如果你确实需要将字符串转换为方法调用 - 而that's a big "if" - 创建一个Map<String, Foo>Foo实现一些“可调用”类接口。然后,字符串到方法的查找就是:

Map<String, Foo> commands = /* ... */;
Foo foo = commands.get("level42");
foo.bar();

答案 2 :(得分:1)

真的听起来像你应该有一个

void setLevel(int level)

呼叫。这可以随意忽略(比如说)11-14等等......但是如果有单独的方法并按名称调用它们会非常难看。你可以用反射来做到这一点,但你应该首先考虑其他选择。

答案 3 :(得分:0)

请参阅此帖子的最佳答案:

Java dynamic function calling

我还建议遵循他们关于结构的建议,创建一个更面向对象的解决方案,而不是使用反射。