我想在我的app上保存一些工作,是否可以获取字符串,例如“level1”然后使用相应的函数,这将是level1();?我的主要观点是不要制作一个巨大的switch-case语句,而只是在存储类中创建一些级别的函数,并且每当你升级时,字符串将变为“level”+ number其中number是int,所以让我们说现在你处于10级,运行的函数是level10();
我希望我能清楚地解释一下......如果不是抱歉..希望你能得到这个想法!
谢谢!
答案 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)