我有一个关于用javaMap东西的一般性问题。我不是很困,但我觉得我的方法不是很漂亮,可能会造成问题,如果有人会想象我的小私人项目将变得更大。
假设我有一个数组={1,2,3,4},它不一定是数字,只是一般的符号。然后我从用户那里得到一个输入,它只能是数组的一部分(不可能有无效的输入)。现在取决于他们选择的元素,一个特定的函数将被执行。我唯一想到的是:
switch (input) {
case array[0]:
doOneThing();
break;
case array[1]:
doAnotherThing();
break;
case array[2]:
doAThirdThing();
break;
case array[3]:
doSomethingElse();
break;
}
这种方法可行,但扩展起来并不美观。我接受了所有可能的想法,非常感谢。
3条答案
按热度按时间dwthyt8l1#
switch语句中必须有常量,这样指定的内容将无法工作。你可以这样做作为一个例子。你不局限于使用
Runnable
兰博达斯。可以使用任何函数接口,并在调用时提供适当的参数。请注意,允许
any
方法any
类,因为它可能导致意外的结果或安全问题,具体取决于如何使用它。印刷品
你也可以这样做。
印刷品
kqhtkvqz2#
一种可能的方法是使用函数的输入值创建函数名。例如,如果输入1,则调用“function1”;如果输入2,则调用“function2”。然后,您可以使用反射按方法的字符串名称调用该方法。
像这样的。
mccptt673#
听起来你想看看java反射api。
其中{x}是根据参数构造的字符串。
您可以类似地调用方法名。
请注意-漂亮的代码往往要付出一定的代价-无论是可读性、性能还是安全性(尤其是在反射的情况下)。就我个人而言,我不介意一个很长的switch语句-它可能不漂亮,但它永远不会咬你。