由于我有多个String案例,应该以相同的方式处理,因此我尝试了以下方法:

switch(str) {
// compiler error
case "apple", "orange", "pieapple":
  handleFruit();
  break;
}

但是我得到一个编译器错误。

我是否必须在Java中逐个调用相同的函数:
switch(str) {
  case "apple":
      handleFruit();
       break;
  // repeat above thing for each fruit
  ...
}

有没有更简单的风格?

最佳答案

您必须为每个String使用case关键字,如下所示:

switch (str) {
    //which mean if String equals to
    case "apple":      // apple
    case "orange":     // or orange
    case "pieapple":   // or pieapple
        handleFruit();
        break;
}

编辑02/05/2019
Java 12
从Java 12开始,提出了新的switch case语法,因此要解决此问题,方法如下:
switch (str) {
    case "apple", "orange", "pieapple" -> handleFruit();
}
现在,您可以选择以逗号分隔,箭头->,然后选择要执行的操作。
另一种语法是:
考虑到每种情况都返回一个值,并且您想在变量中设置值,假设handleFruit()返回String,则旧语法应为:
String result;  //  <-------------------------- declare
switch (str) {
    //which mean if String equals to
    case "apple":      // apple
    case "orange":     // or orange
    case "pieapple":   // or pieapple
        result = handleFruit();  //      <----- then assign
        break;
}
现在使用Java 12,您可以像这样:
String result = switch (str) { //  <----------- declare and assign in one shot
    case "apple", "orange", "pieapple" -> handleFruit();
}
不错的语法

09-10 08:39
查看更多