相关疑难解决方法(0)

如何在编译时确保枚举开关的完整性?

我有几个switch语句测试一个enum.enum必须通过switch语句在语句中处理所有值case.在代码重构期间,可能会发生enum收缩和增长.当enum收缩时,编译器会抛出错误.但是,如果enum增长,则不会抛出任何错误.匹配状态被遗忘并产生运行时错误.我想将此错误从运行时移动到编译时.从理论上讲,应该可以enum在编译时检测丢失的情况.有没有办法实现这个目标?

问题已经存在" 如何检测新值已添加到枚举中并且未在交换机中处理 "但它不包含仅与Eclipse相关的解决方案的答案.

java

38
推荐指数
4
解决办法
7564
查看次数

有没有办法强制你在Java中切换枚举的所有定义值?

假设你有一个包含3个值的枚举:

enum Colors { RED, GREEN, BLUE }
Run Code Online (Sandbox Code Playgroud)

你在某种方法中切换它的所有值,认为你已经处理了所有情况:

switch (colors) {
    case RED: ...
    case GREEN: ...
    case BLUE: ...
}
Run Code Online (Sandbox Code Playgroud)

然后,您在枚举中添加一个新值:

enum Colors { RED, GREEN, BLUE, YELLOW }
Run Code Online (Sandbox Code Playgroud)

除了你在方法中默默地错过一个案例之外,一切仍然编译得很好YELLOW.有没有办法在这种情况下引发编译时错误?


编辑:不明白为什么这被标记为欺骗我可以在Java中添加和删除运行时枚举的元素.由于答案是"否",这意味着应该可以在编译时知道枚举的所有值,因此我要求编译器/某些代码分析工具可以实现, ?

java enums switch-statement

6
推荐指数
2
解决办法
103
查看次数

标签 统计

java ×2

enums ×1

switch-statement ×1