Java - switch case,多个case调用相同的函数

Lee*_*eem 9 java switch-statement

由于我有多个String案例应该以同样的方式处理,我试过:

switch(str) {
// compiler error
case "apple", "orange", "pieapple":
  handleFruit();
  break;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到编译器错误.

在Java中,我是否应该逐个调用相同的函数:

switch(str) {
  case "apple":
      handleFruit();
       break;
  // repeat above thing for each fruit
  ...
}
Run Code Online (Sandbox Code Playgroud)

没有简单的风格吗?

YCF*_*F_L 11

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

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

编辑02/05/2019

Java 12

从Java 12开始,提出了新的switch case语法,因此要解决此问题,方法如下:

switch (str) {
    case "apple", "orange", "pieapple" -> handleFruit();
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以选择多个选项,并用逗号分隔,一个箭头->然后是您要执行的操作。

另一种语法是:

考虑到每种情况都返回一个值,并且您想在变量中设置值,假设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;
}
Run Code Online (Sandbox Code Playgroud)

现在使用Java 12,您可以像这样:

String result = switch (str) { //  <----------- declare and assign in one shot
    case "apple", "orange", "pieapple" -> handleFruit();
}
Run Code Online (Sandbox Code Playgroud)

不错的语法


das*_*ght 6

你没有时, Java支持堕落break:

case "apple":
case "orange":
case "pieapple":
    handleFruit();
    break;
Run Code Online (Sandbox Code Playgroud)