Java 枚举中的强制切换默认值

And*_*bie 6 java enums switch-statement

假设我创建了一个枚举,例如下面的:

public enum MyEnum {
    A,
    B,
    C;
}
Run Code Online (Sandbox Code Playgroud)

并且有一个 switch 语句(如下所示),其中每个枚举值都有一个 case 语句,但我还添加了一个默认值来抛出 IllegalArgumentException。(如果添加了一个新的枚举值,那么如果新值被传递,那么有人更有可能会注意到该 case 语句出了问题。我的想法是异常比日志或尝试处理新值更引人注目案件。)

switch(myEnum) {
    case A:
        //do something
        break;
    case B:
        //do something
        break;
    case C:
        //do something
        break;
    default:
        throw new IllegalArgumentException("Unrecognized enum type!");
}
Run Code Online (Sandbox Code Playgroud)

除非我遗漏了某些东西,否则从理论上讲,如果不添加新的枚举值或更改 switch 语句,默认值应该是无法访问的。

所以我想知道的是,如果我正在编写代码覆盖率的 JUnit 测试,是否有办法强制切换到默认语句而不更新应用程序代码?

And*_*bie 2

不可能强制 Java 在 switch 语句中命中默认情况,如问题中所述,即所有枚举值都有一种超出 switch 的情况。