Java 是否可以从相同情况下的方法中退出(返回)开关情况。?

Java 是否可以从相同情况下的方法中退出(返回)开关情况。?,java,Java,是否可以从相同情况下的方法中退出(返回)开关情况 鉴于此代码: switch(int blaah) { case 1: some code here; break; case 2: myMethod(); some code here; break; default: some code here; } public void myMethod() { if(b

是否可以从相同情况下的方法中退出(返回)开关情况

鉴于此代码:

switch(int blaah) {
    case 1: 
        some code here;
        break;
    case 2: 
        myMethod();
        some code here;
        break;
    default:
        some code here;
}

public void myMethod() {

    if(boolean condition) {
        return;  
        /*I want this return valuates in switch case too.
        so the switch case exit without executing the rest of code of "case 2" */

    }
        some code here;
}
我知道这里的
return
只需跳过
myMethod
中的其余代码即可。我正在寻找一些东西,告诉switch case停止方法的执行。

如果没有完整的上下文,很难给出有意义的解决方案

然而

您可以从该方法返回一个布尔结果,开关案例可以根据该结果决定是否继续

public boolean myMethod() {

    if(boolean condition) {
        return false;
    }
     //some code here;
     return true;
}


switch(int blaah) {
    case 1: 
        some code here;
        break;
    case 2: 
        if (myMethod()) {
            //some code here; //Execute only if the method signalled to do so
        }
        break;
    default:
        some code here;
}
另一种选择:

如果
If(boolean condition)
是您在方法中要做的第一件事,那么您可以在switch case本身中对其进行求值,如果结果为true并立即中断,则可以避免调用该方法

case 2: 
        if (boolean condition) {
            myMethod();
            //some code here;
        }
        break;
没有完整的背景,很难给出有意义的解决方案

然而

您可以从该方法返回一个布尔结果,开关案例可以根据该结果决定是否继续

public boolean myMethod() {

    if(boolean condition) {
        return false;
    }
     //some code here;
     return true;
}


switch(int blaah) {
    case 1: 
        some code here;
        break;
    case 2: 
        if (myMethod()) {
            //some code here; //Execute only if the method signalled to do so
        }
        break;
    default:
        some code here;
}
另一种选择:

如果
If(boolean condition)
是您在方法中要做的第一件事,那么您可以在switch case本身中对其进行求值,如果结果为true并立即中断,则可以避免调用该方法

case 2: 
        if (boolean condition) {
            myMethod();
            //some code here;
        }
        break;
最好的选择是

   case 2: 
        if (someCondition) {
            myMethod();
        }
         else {
          // some code
          }
        break;
最好的选择是

   case 2: 
        if (someCondition) {
            myMethod();
        }
         else {
          // some code
          }
        break;

唯一“神奇”的方法是例外,这通常是一个非常糟糕的主意。我认为更好的做法是你解释你想做什么,而不是你想怎么做。很明显,您可以将myMethod()签名更改为myMethod(布尔条件),并在调用时将其传递给方法。是否将条件从方法移动到调用站点
if(boolean condition)myMethod()
实现这一点的唯一“神奇”方法是异常,这通常是一个非常糟糕的主意。我认为更好的做法是你解释你想做什么,而不是如何做。很明显,您可以将myMethod()签名更改为myMethod(布尔条件),并在调用时将其传递给方法。是否将条件从方法移动到调用站点
if(布尔条件)myMethod()
当然是一个选项,但这种事情很快就会导致非常难看的代码。您开始使用副作用而不是返回值,这样您就可以返回
布尔值
,这很快就会变成意大利面条。只是一句警告。@BoristheSpider完全同意。@BoristheSpider我已经用另一个选项更新了答案。我会坚持第一个答案(我知道第二个选项),该死的,我不想把代码弄乱。当然,这是一种选择——但这种事情很快就会导致非常难看的代码。您开始使用副作用而不是返回值,这样您就可以返回
布尔值
,这很快就会变成意大利面条。只是一句警告。@BoristheSpider完全同意。@BoristheSpider我已经用另一个选项更新了答案。我会坚持第一个答案(我知道第二个选项),该死的,我不想把代码弄乱。