假设我有一个枚举Color
有 2 个可能的值:RED
and BLUE
:
public enum Color {
RED,
BLUE
}
现在假设我有这个枚举的 switch 语句,其中有两个可能值的代码:
Color color = getColor(); // a method which returns a value of enum "Color"
switch (color) {
case RED:
...
break;
case BLUE:
...
break;
default:
break;
}
由于我有枚举的两个可能值的代码块,所以有什么用default
在上面的代码中?
如果代码以某种方式到达,我应该抛出异常吗default
像这样阻塞?
Color color = getColor(); // a method which returns a value of enum "Color"
switch (color) {
case RED:
...
break;
case BLUE:
...
break;
default:
throw new IllegalArgumentException("This should not have happened");
}
正如第二个示例所示,抛出异常是一种很好的做法。您可以通过快速失败来提高代码的可维护性。
在这种情况下,这意味着如果您稍后(可能几年后)添加一个枚举值并且它到达 switch 语句,您将立即发现错误。
如果未设置默认值,即使使用新的枚举值,代码也可能会运行,并且可能会出现不良行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)