Java switch语句和枚举的有趣结果

时间:2012-10-08 00:08:46

标签: java enums switch-statement case

在调试我的代码时,我在枚举时遇到了这个有趣的场景。

对我来说,看起来它不应该编译并阻止我犯这个愚蠢的错误,是否有一些我可以使用这种语法的地方?

我的java版本是1.6.0_10

private enum E_TEST
{
    A, B, C, D, E
}

public static void main( String[] args )
{
    for( E_TEST e : E_TEST.values() )
    {
        switch( e )
        {
            case A: B: C: D: E:
            {
                System.out.println( e );
                break;
            }
        }
    }
}

为完整起见,此代码的输出如下:

A

1 个答案:

答案 0 :(得分:4)

代码编译因为在行

        case A: B: C: D: E:

B:,C:,D:和E:是标签。

它不符合您的期望,因为该行应

case A: case B: case C: case D: case E:

正如dasblinkenlight在他的帖子中所说。