Discuss / Java / 枚举在switch-case中的语法有坑

枚举在switch-case中的语法有坑

Topic source

不能用

case Weekday.MON:

而只能用

case MON:

而我们用==比较时,又用的是前者。这两者语法还不一致,有点坑啊

== 比较时,要把类型带出来,所以是Weekday.MON,不然光写一个MON就成了未定义变量了

Switch case 里 因为你在Switch()里面已经写了是 day,而day的类型是Weekday,所以case后面的Weekday就省略了,因为所有的case类型一定是Weekday

其实在IDE里打代码,switch case 会自动提示,所以不用担心

是你没看懂吧! 

或者说 你对  switch case 没理解

最后,枚举类可以应用在switch语句中。因为枚举类天生具有类型信息和有限个枚举常量,所以比intString类型更适合用在switch语句中:

赵泽仁

#4 Created at ... [Delete] [Delete and Lock User]

@yiqzhang3_foryhi 的理解不太对。

@求女票上微博 说的我也不太明白。

按之前的教程

switch case 翻译为 if else 如下:

if (option == 1) {
    System.out.println("Selected 1");
} else if (option == 2) {
    System.out.println("Selected 2");
}

既然使用 == 比较

那为什么 case 里是:

case MON:

而不是(而且会报错):

case Weekday.MON:

这是不是 enum 的规定?

简单理解。设计者 为了 少写 一些代码


  • 1

Reply