1700445829
1700445830
//s变量不能超越边界,校验条件
1700445831
1700445832
if(s>=0&&s<4){
1700445833
1700445834
switch(s){
1700445835
1700445836
case Season.Summer:
1700445837
1700445838
System.out.println(“Summer is very hot!”);
1700445839
1700445840
break;
1700445841
1700445842
case Season.Winter:
1700445843
1700445844
System.out.println(“Winter is very cold!”);
1700445845
1700445846
break;
1700445847
1700445848
……
1700445849
1700445850
}
1700445851
1700445852
}
1700445853
1700445854
}
1700445855
1700445856
很简单,先使用switch语句判断是哪一个常量,然后输出。但问题是我们得对输入值进行检查,确定是否越界,如果常量非常庞大,校验输入就成了一件非常麻烦的事情,但这是一个不可逃避的过程,特别是如果我们的校验条件不严格,虽然编译照样可以通过,但是运行期就会产生无法预知的后果。
1700445857
1700445858
我们再来看看枚举常量是否能够避免校验问题,代码如下:
1700445859
1700445860
public void describe(Season s){
1700445861
1700445862
switch(s){
1700445863
1700445864
case Summer:
1700445865
1700445866
System.out.println(Season.Summer+“is very hot”);
1700445867
1700445868
break;
1700445869
1700445870
case Winter:
1700445871
1700445872
System.out.println(Season.Winter+“is very cold”);
1700445873
1700445874
break;
1700445875
1700445876
……
1700445877
1700445878
}
[
上一页 ]
[ :1.700445829e+09 ]
[
下一页 ]