将Java枚举与点语法(enum.value1.value2)结合起来?

dom*_*son 4 java enums android

我正在浏览一些现有的(和工作的)代码,并遇到了这样的一行:

if (someObject.getStatus() == SomeEnum.VALUE1.VALUE2) { ... }
Run Code Online (Sandbox Code Playgroud)

SomeEnum是一个简单的枚举,看起来像这样:

public enum SomeEnum {
    VALUE1,
    VALUE2,
    VALUE3,
    ...
}

private SomeEnum() {}
Run Code Online (Sandbox Code Playgroud)

现在,上面的比较做了什么?更确切地说,那里的两个枚举值的组合是什么?因为我认为这是完全错误的,所以我很惊讶没有看到任何警告或错误.但是,它编译并运行得很好.有人可以告诉我这会做什么吗?

man*_*uti 5

如果你使用像Eclipse这样的IDE,你应该得到一个警告,说VALUE2应该以静态方式访问.随javac -Xlint:all你也会收到警告.除此之外,SomeEnum.VALUE1.VALUE2完全相同SomeEnum.VALUE2.枚举常量表示为静态字段.