Tiger之前的switch只能运用 int、short、char、bye值(不能用String很麻烦...),现在支持Enum...
[quote]
switch (te.getEn()) { [color=blue]//te.getEn() 取得一个Enum对象,进行case[/color]
case A : System.out.println("Hello A");
case B : System.out.println("Hello B");
[color=blue] //奇怪吧?关于 case A,case B,不能把Enum加上,如 EnumFirst.A 会出错的...所以要小心,必须case到所有的值(如果需要)[/color]
default: System.out.println("Hello default");[color=blue]//推荐加上default,防止Enum变化,没有捕获到[/color]
}
[/quote]
关于Enum的编译...
编译的时候不会转化成case ...(nt、short、char、bye)值的,有两种处理方式:
1.会创建一个 jump table,然后通过ordinal来处理(同一编译单元)
2.转换成if else ....判断(不同一编译单元)
[quote]
switch (te.getEn()) { [color=blue]//te.getEn() 取得一个Enum对象,进行case[/color]
case A : System.out.println("Hello A");
case B : System.out.println("Hello B");
[color=blue] //奇怪吧?关于 case A,case B,不能把Enum加上,如 EnumFirst.A 会出错的...所以要小心,必须case到所有的值(如果需要)[/color]
default: System.out.println("Hello default");[color=blue]//推荐加上default,防止Enum变化,没有捕获到[/color]
}
[/quote]
关于Enum的编译...
编译的时候不会转化成case ...(nt、short、char、bye)值的,有两种处理方式:
1.会创建一个 jump table,然后通过ordinal来处理(同一编译单元)
2.转换成if else ....判断(不同一编译单元)
Java枚举与switch用法
本文探讨了Java中枚举类型与switch语句的结合使用。介绍了如何利用枚举对象进行case匹配,并讨论了编译时的处理方式,包括通过创建跳转表或转换为if-else语句的方法。
2万+

被折叠的 条评论
为什么被折叠?



