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 ....判断(不同一编译单元)