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

时间:2017-10-25 16:02:38

标签: java enums switch-statement

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

public enum MyEnum {
    A,
    B,
    C;
}

并且有一个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!");
}

除非我遗漏了某些东西,理论上,如果没有添加新的枚举值或改变switch语句,默认值应该无法访问。

所以我想知道的是,如果我正在为代码覆盖编写JUnit测试,有没有办法强制交换机在不更新应用程序代码的情况下点击默认语句?

1 个答案:

答案 0 :(得分:1)

如问题中所述,不可能强制Java在switch语句中遇到默认情况,即所有枚举值都有一个突破开关的情况。