Jas*_*son 2 java enums switch-statement
即使不可能通过switch语句,我仍然需要包含一个return语句.枚举无法扩展,因此将来无法添加或删除其他值.
这是Java中的错误吗?如果没有,你知道为什么会这样吗?
这是一个看我的意思的例子:
public class Example{
enum Day{
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
public static String getType(Day day, boolean weekendOff){
switch(day){
case Monday:
case Tuesday:
case Wednesday:
case Thursday:
return "work day";
case Friday:
case Saturday:
case Sunday:
if (weekendOff){
return "party day";
}
else {
return "work day";
}
}
//this is the line I don't understand
return "";
}
public static void main(String []args){
getType(Day.Monday, false);
}
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*ung 10
因为将来可能会添加新的枚举元素.如果您的枚举使用类没有重新编译,那么您的代码将不再正确.这避免了这种可能性.
正如其他人所说的那样,只需添加一个default条款来处理这种情况,可能就是抛出一个AssertionError.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |