将Java If-case转换为Switch

时间:2014-05-08 10:50:48

标签: java

我需要帮助将If-case转换为switch语句,并且我正在使用enums。

我的枚举示例如下:

private enum FruitsType{
Apple("Apple"), Orange("Orange"), Mango("Mango"); }

我的方法包含If和Else-if语句如下:

private String getFruitsPrefMsg() {
String message = getMessage();
if (message == null) {
message = getOtherMessage(); }

if(FruitsType.Apple.toString()) {
//return something; } 
else if(FruitsType.Orange.toString()) {
// return something; }
else if(FruitsType.Mango.toString()) {
// return something; }      
}

不考虑代码中的逻辑,因为这只是我的代码的一个示例,有人可以帮我将上述if和else-if语句(包括检查null)转换为简单的切换案例,我会使用swtich需要最简单的代码。我想在这里使用switch,因为这是标准,我必须使用switch语句。

1 个答案:

答案 0 :(得分:2)

我不明白你的条件,你根本没有使用获得的信息。

我会按如下方式制作枚举:

private enum FruitsType {
    Apple,
    Orange,
    Mango
}

至于开关区,我可能会做类似的事情:

private String getFruitsPrefMsg() {

   String message = getMessage();
   if(message == null)
       message = getOtherMessage();

   try {
      switch(FruitsType.valueOf(message)) {
          case Apple:
              //return something
          case Orange:
              //return something
          case Mango:
              //return something
      }
   } catch(IllegalArgumentException exception) {
        //Message is not in the enum.
        //Handle error
        //You can return something here
   }

   //Or return something here
}

我知道try-catch块非常难看,但这是我能想到的最简单的解决方案。

祝你好运。