首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么不能在switch语句中完全限定枚举值?

为什么不能在switch语句中完全限定枚举值?
EN

Stack Overflow用户
提问于 2018-04-27 10:49:46
回答 1查看 0关注 0票数 0

考虑这个代码:

代码语言:javascript
复制
public final class Foo
{
    private enum X
    {
        VALUE1, VALUE2
    }

    public static void main(final String... args)
    {
        final X x = X.VALUE1;

        switch (x) {
            case VALUE1:
                System.out.println(1);
                break;
            case VALUE2:
                System.out.println(2);
        }
    }
}

此代码工作正常。

但是,如果我替换:

代码语言:javascript
复制
case VALUE1: // or VALUE2

有:

代码语言:javascript
复制
case X.VALUE1: // or X.VALUE2

则会出现:

java:/path/to/Foo.java:whatever:枚举开关case标签必须是枚举常量的非限定名

就我而言,VALUE1并且X.VALUE1完全一样。引用的文字根本不能解释它。

在JLS中,它是如何定义报表中的enumswitch必须以这种方式写的?

EN

回答 1

Stack Overflow用户

发布于 2018-04-27 20:18:49

SwitchLabel期望EnumConstantName被定义为枚举常量标识符的值,这并不合格

EnumConstant: 注释opt标识符参数opt ClassBody opt

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档