假设我有一个具有 2 个可能值的枚举 Color
:RED
和 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
block ,我应该抛出异常吗?
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 语句,您将立即发现错误。
如果未设置默认值,即使使用新的枚举值,代码也可能会运行,并且可能会出现不希望的行为。
关于java - 当开关用于枚举时,默认值的用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33019562/