我想在我的应用程序上保存一些工作,是否可以获取字符串,例如“level1”,然后使用相应的函数,即 level1();?我的主要观点是不要做一个巨大的 switch-case 语句,而只是在一个存储类中创建几个级别函数,并且每当你升级时,字符串将变为“级别”+数字,其中数字是 int,所以让假设现在您处于第 10 级,将运行的函数是 level10();
我希望我解释清楚了..对不起,如果没有..希望你明白!
谢谢!
我相信您想在运行时使用其名称作为字符串来调用方法。
你可以通过反射来做到这一点。
Class.getMethod(String methodName, Class... parameterTypes)
不要从方法名称的角度来考虑这一点,除非你想用反射来解决这个问题(你不想这样做,也没有必要)。
如果您确实需要将字符串转换为方法调用——这是一个很大的“如果” ——创建一个Map<String, Foo>
whereFoo
实现了一些类似“可调用”的接口。然后字符串到方法的查找很简单:
Map<String, Foo> commands = /* ... */;
Foo foo = commands.get("level42");
foo.bar();
听起来你真的应该有一个
void setLevel(int level)
称呼。可以随意忽略(例如)11-14 级或其他任何内容......但是拥有单独的方法并通过名称调用它们会非常难看。您可以通过反思来做到这一点,但您应该首先考虑其他选择。