使用字符串选项优化if-else/switch-case

cc.*_*cc. 4 java

这段代码会带来什么修改?在最后几行中,我应该使用更多的if-else结构,而不是" if-if-if"

if (action.equals("opt1"))
{
    //something
}
else
{
    if (action.equals("opt2"))
    {
        //something
    }
    else
    {
        if ((action.equals("opt3")) || (action.equals("opt4")))
        {
            //something
        }
        if (action.equals("opt5"))
        {
            //something
        }
        if (action.equals("opt6"))
        {
            //something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

后来编辑:这是Java.我不认为switch-case结构可以与Strings一起使用.

后来编辑2:

交换机使用byte,short,char和int原始数据类型.它还适用于枚举类型(在类和继承中讨论)和一些"包装"某些基本类型的特殊类:Character,Byte,Short和Integer(在简单数据对象中讨论).

Jul*_*ain 10

即使你不使用switch语句,是的,如果要避免无用的比较,请使用else:如果第一个if被采用,你不希望在这里评估所有其他ifs,因为它们总是假的.如果最后一个块是如此缩进以至于你不能在不滚动的情况下看不到它,你也不需要缩进,下面的代码是完全可读的:

if (action.equals("opt1")) {
}
else if (action.equals("opt2")) {
}
else if (action.equals("opt3")) {
}
else {
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*rod 5

使用字符串作为键类型的字典,并将*作为值类型委托. - 从使用字符串中检索方法将需要O(1 +加载).

在类的构造函数中填充字典.

  • Java不支持委托,因此解决方法可能需要定义一些内部类 - 每种情况一个,并传递内部类的实例而不是方法作为值.