Java switch case - default vs explicit enumeration

Rus*_*ell 5 java switch-statement

我正在使用Java 6.

假设我有一个包含6个值的枚举,从A到F排序.大约有4个值处理相同.我可以这样写.

switch (whichType) {
    case A:
    case B:
    case C:
    case D:
        return task();
    case E:
        return someothertask();
    case F:
        return anothersomeothertask();
}
Run Code Online (Sandbox Code Playgroud)

或者像这样.

switch (whichType) {
    case E:
        return someothertask();
    case F:
        return anothersomeothertask();
    default:
        return task();
}
Run Code Online (Sandbox Code Playgroud)

空值永远不会到达此开关.

在简洁和清晰方面,第二种方法更好.在明确方面,我认为第一种方法更好.

每种方法都有其他优点/缺点吗?

此外,这个简单的问题可能会重复,但我尝试过,但在任何地方都找不到它.如果我没有足够好地搜索它,我道歉.

dka*_*arp 7

如果枚举是绝对的,永远正确地固定在六个值,两者都很好.否则,请考虑枚举可能的第七个值.如果E和F是与此switch逻辑相关的唯一两个可能的异常值,并且任何其他值将落在与A到D相同的桶中,请继续使用default.否则,您拥有case每个值更安全.