java – 如何检测新值已添加到枚举中,并且不在交换机中处理
我不时要在项目的枚举类型中添加一个新值.
public enum Day { SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,FILENOTFOUND //this one is new one } 我想要的是每个我没有处理新值的开关都有编译时错误,如下所示: switch (color) { case MONDAY: case TUESDAY: case WEDNESDAY: case THURSDAY: System.out.println("Mondays are bad."); break; case FRIDAY: System.out.println("Fridays are better."); break; case SATURDAY: case SUNDAY: System.out.println("Weekends are best."); break; } 有一个默认:抛出一些异常是不够好的,我希望它是编译时间. 我不认为这是可能的,但也许有人有一个巧妙的把戏…… 我认为Findbugs有规则可以找到那些,但我只看到了这个: 编辑:我选择了马克的回复,我确实使用了Eclipse,听起来就像我需要的那样!我根本不是findbugs的专家,所以我可能错过了这样的功能,尽管我不这么认为. 解决方法
Eclipse有一个可以启用的编译时警告/错误:“switch”上没有包含枚举常量.
从Project属性(或常规首选项),转到Java Compiler-> Errors / Warnings,选中Enable project specific settings.你会在潜在的编程问题下找到警告.它默认设置为Ignore,但您可以将其提升为Warning或Error. 编辑:我认为这是不言而喻的,但我想我还是会说的:这只适用于您在Eclipse中开发或使用它进行构建管理的情况.显然,Findbugs或类似的等价物将是“真正的”答案,因为它超越了IDE并且可以集成到构建过程中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Java的super关键字与instanceof运算符使用方法
- 一文搞明白位运算、补码、反码、原码
- java – 使用Hibernate和Spring Data JPA激活SQL语句
- GregorianCalendar在Java中返回错误的DAY_OF_WEEK
- java – Play Framework 2 – 调用Web服务并返回一个对象
- java – 在Fragments中使用DIalogs
- java中简单的截取分割字符串实例
- java – 如何使用forSach与slf4j.logger.info
- java – Hibernate:永远不会调用MyInterceptor#onFlushDir
- java – JSpinner ActionListener替代方案