0

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

我希望我解释清楚了..对不起,如果没有..希望你明白!

谢谢!

4

4 回答 4

3

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

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

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

于 2012-07-31T13:06:54.137 回答
2

不要从方法名称的角度来考虑这一点,除非你想用反射来解决这个问题(你不想这样做,也没有必要)。

如果您确实需要将字符串转换为方法调用——这是一个很大的“如果” ——创建一个Map<String, Foo>whereFoo实现了一些类似“可调用”的接口。然后字符串到方法的查找很简单:

Map<String, Foo> commands = /* ... */;
Foo foo = commands.get("level42");
foo.bar();
于 2012-07-31T13:07:11.070 回答
1

听起来你真的应该有一个

void setLevel(int level)

称呼。可以随意忽略(例如)11-14 级或其他任何内容......但是拥有单独的方法并通过名称调用它们会非常难看。您可以通过反思来做到这一点,但您应该首先考虑其他选择。

于 2012-07-31T13:06:38.743 回答
0

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

Java动态函数调用

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

于 2012-07-31T13:06:30.270 回答