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();
    }