switch/case 声明中是否有等同于 "after" 的子句? JAVA
Is there the equivalent of an "after" clause in a switch/case declaration ? JAVA
我想知道是否有办法在 Java 中通过 switch/case 运算符在每个段落的末尾执行一个过程? (例如,在循环中的开关的情况下)
像这样的 'after' 运算符(它做 :
switch (constant) {
case a: return "x";
case b: return "y";
case c: return "z";
default: return "unknown";
after: alwayPassInThisMethodAfterBreakStatement()
}
因为 'return' 操作,我不能简单地在 switch case 语句之后写我的操作,而且我不能使用 'break' 操作而不是 'return' 因为我的上下文。
switch-case 语句中没有 after 或 finally。您可以构建一个 if-else,例如:
if(yourvar==a) {
Alwaysmethod();
return x;
} else if(yourvar==b) {
Alwaysmethod();
return y;
} else if(yourvar==c) {
Alwaymethod();
return z;
} ..
但这没有任何意义。你可以把这个方法放在你的 switch-case 之后或者你的 return 到达的任何地方,所以它总是会被执行。
你可以使用 try-finally 来保证调用 after 方法,这样可以避免每个分支重复调用。示例:
try {
switch (constant) {
case 1: return "x";
case 2: return "y";
case 3: return "z";
default: return "unknown";
}
} finally {
alwaysCalledAtEnd();
}
我想知道是否有办法在 Java 中通过 switch/case 运算符在每个段落的末尾执行一个过程? (例如,在循环中的开关的情况下)
像这样的 'after' 运算符(它做 :
switch (constant) {
case a: return "x";
case b: return "y";
case c: return "z";
default: return "unknown";
after: alwayPassInThisMethodAfterBreakStatement()
}
因为 'return' 操作,我不能简单地在 switch case 语句之后写我的操作,而且我不能使用 'break' 操作而不是 'return' 因为我的上下文。
switch-case 语句中没有 after 或 finally。您可以构建一个 if-else,例如:
if(yourvar==a) {
Alwaysmethod();
return x;
} else if(yourvar==b) {
Alwaysmethod();
return y;
} else if(yourvar==c) {
Alwaymethod();
return z;
} ..
但这没有任何意义。你可以把这个方法放在你的 switch-case 之后或者你的 return 到达的任何地方,所以它总是会被执行。
你可以使用 try-finally 来保证调用 after 方法,这样可以避免每个分支重复调用。示例:
try {
switch (constant) {
case 1: return "x";
case 2: return "y";
case 3: return "z";
default: return "unknown";
}
} finally {
alwaysCalledAtEnd();
}