4

在 Eclipse Juno中,我们有一个用于转换Switch to If-else. 有没有办法为相反的操作添加快速修复或类似的快捷方式:转换If-else to Switch

例如转换:

if (kind == 1) {
  return -1;
} else if (kind == 2) {
  return -2;
} else {
  return 0;
}

至:

switch (kind) {
  case 1: return -1;
  case 2: return -2;
  default: return 0;
}
4

1 回答 1

0

有趣的问题。如果可以添加一个快速修复来转换if-elseswitch,那么 Assist 将如何将包含多个变量的表达式的if-else语句转换为语句?booleanswitch

假设,我们想将此if-else语句转换为switch

if (x == 1 && y == 1) {
   //do something
} else if (x == 1 && y == 3) {
   //do something else
} else if (x == 2 && y == 1) {
   //and so on.
}

这将导致:

switch (x) {
   case 1 : {
      switch (y) {
         case 1: // do something
         case 3: // and so on  
      }
      break;
   }
   case 2 : {
      switch (y) {
         case 1: //do something else
      }
      break;
   }
}

就个人而言,我不希望if-else将更复杂的boolean语句转换为switch,因为生成的代码可能很难阅读并且(可能)不符合一些良好实践约定。在更简单的情况下,就像您发布的那样,它不是很困难,也不会花费太多时间和精力来转换它。

于 2013-05-10T09:59:37.627 回答