相关疑难解决方法(0)

Java枚举和切换语句 - 默认情况?

对于建议抛出异常的人:
抛出异常不会给我一个编译时错误,它会给我一个运行时错误.我知道我可以抛出一个异常,我宁愿在编译期间死也不会在运行时死掉.

首先,我使用的是eclipse 3.4.

我有一个数据模型,其模式属性是枚举.

enum Mode {on(...), off(...), standby(...); ...}
Run Code Online (Sandbox Code Playgroud)

我目前正在写这个模型的视图,我有代码

...
switch(model.getMode()) {
case on:
   return getOnColor();
case off:
   return getOffColor();
case standby:
   return getStandbyColor();
}
...
Run Code Online (Sandbox Code Playgroud)

我收到错误"此方法必须返回类型java.awt.Color的结果",因为我没有默认情况,并且在函数末尾没有返回xxx. 在有人为枚举添加另一种类型的情况下出现编译错误(例如关闭)所以我不想放置抛出AssertionError的默认情况,因为这将使用修改后的模式进行编译而不会被视为错误直到运行时.

我的问题是:
为什么EclipseBuilder(和javac)没有意识到这个开关涵盖了所有可能性(或者它是否涵盖了它们?)并且停止警告我需要返回类型.有没有办法,我可以做我想要的,而无需向Mode添加方法?

如果失败了,是否有一个选项可以在不包含所有Enum可能值的switch语句上发出警告/错误?

编辑:Rob:这是一个编译错误.我只是尝试用javac编译它,我得到一个"缺少返回语句"错误,目标是方法的最后一个}.Eclispe只是将错误放在方法的顶部.

java enums

56
推荐指数
4
解决办法
4万
查看次数

标签 统计

enums ×1

java ×1