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我已经用另一个选项更新了答案。我会坚持第一个答案(我知道第二个选项),该死的,我不想把代码弄乱。