【发布时间】:2017-09-10 18:27:09
【问题描述】:
假设你有一个包含 3 个值的枚举:
enum Colors { RED, GREEN, BLUE }
您以某种方法切换它的所有值,认为您已经处理了所有情况:
switch (colors) {
case RED: ...
case GREEN: ...
case BLUE: ...
}
然后,您向枚举添加一个新值:
enum Colors { RED, GREEN, BLUE, YELLOW }
一切仍然编译得很好,除了你在方法中默默地错过了YELLOW 的情况。有没有办法在这种情况下引发编译时错误?
编辑:不明白为什么这被标记为Can I add and remove elements of enumeration at runtime in Java 的欺骗。由于答案是“否”,这意味着应该可以在编译时知道枚举的所有值,因此我所要求的应该是编译器/一些代码分析工具可以实现的,对吧?
【问题讨论】:
-
default: throw new UnsupportedOperationException();? -
@Colonder 绝对不是那个问题的重复。
-
@Colonder 取消将此标记为骗子,好吗? :)
标签: java enums switch-statement