首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我可以直接访问枚举常量作为另一个类中switch语句的case标签

问为什么我可以直接访问枚举常量作为另一个类中switch语句的case标签
EN

Stack Overflow用户
提问于 2015-03-21 18:38:55
回答 2查看 73关注 0票数 0

为什么我可以在下面的代码中直接访问枚举常量HOT:

代码语言:javascript
复制
enum SPICE_DEGREE {
    MILD, MEDIUM, HOT, SUICIDE;
}
class SwitchingFun {
    public static void main(String[] args) {
        SPICE_DEGREE spiceDegree = SPICE_DEGREE.HOT; //Unable to access HOT directly
        switch (spiceDegree) {
            case HOT:   //Able to access HOT directly here
                System.out.println("Have fun!");
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2015-03-21 18:43:40

这就是定义语言的方式-当case标签是枚举值时,这意味着switch表达式必须是该类型的枚举,因此在任何地方指定枚举类型都是多余的。

来自JLS 14.11

每个case标签都有一个case常量,该常量可以是常量表达式,也可以是枚举常量的名称。

和

如果switch语句的表达式的类型是枚举类型,则与switch语句关联的每个case常量都必须是该类型的枚举常量。

票数 4
EN

Stack Overflow用户

发布于 2015-03-21 18:44:04

Java推断switch语句中提供的表达式的类型,然后只允许在case块中列出解析类型的有效值。

如果我们必须为每个case指定枚举常量的类型,那就太冗长了。

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

https://stackoverflow.com/questions/29181747

复制
相关文章

相似问题

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