Java - 切换案例,多个案例调用同一个函数

2022-09-04 00:52:31

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

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

但是我收到编译器错误。

在Java中,我是否必须逐个案例调用相同的函数:

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

没有更简单的风格了吗?


答案 1

您必须为每个字符串使用关键字,如下所示: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 (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();
}

不错的语法


答案 2

Java支持在没有break

case "apple":
case "orange":
case "pieapple":
    handleFruit();
    break;