【发布时间】:2011-04-29 08:01:52
【问题描述】:
有时我必须在我的项目中为枚举类型添加一个新值。
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 会有一个规则来找到这些,但我只看到了这个: Eq: Covariant equals() method defined for enum (EQ_DONT_DEFINE_EQUALS_FOR_ENUM)
编辑:我选择 Mark 的回复,我确实使用 Eclipse,这听起来就像我需要的一样!我根本不是 findbugs 方面的专家,所以我可能错过了这样的功能,尽管我不这么认为。
【问题讨论】:
-
在枚举声明附近添加注释:-)
-
+1 用于将 FILENOTFOUND 添加到一组不相关的枚举常量中
-
+0 用于将 FILENOTFOUND 添加到一组不相关的枚举常量中。为什么人们仍然觉得这很有趣? (我不介意 OP 或任何人在临时示例中使用它,但老实说,即使在看到此参考资料 8000 次之后,人们仍然认为这很有趣并相应地投赞成票?)
-
顺便说一句,+1 是个好问题。
-
my + 1 也是一个好问题。冷静下来,呼吸一下。
标签: java enums compilation findbugs