1700446257
1700446258
问题清楚了,有两个方法可以解决此问题:
1700446259
1700446260
(1)使用try……catch捕捉异常
1700446261
1700446262
这是最直接也是最简单的方式,产生IllegalArgumentException即可确认为没有相同名称的枚举项,代码如下:
1700446263
1700446264
try{
1700446265
1700446266
Season s=Season.valueOf(name);
1700446267
1700446268
//有该枚举项时的处理
1700446269
1700446270
System.out.println(s);
1700446271
1700446272
}catch(Exception e){
1700446273
1700446274
System.out.println(“无相关枚举项”);
1700446275
1700446276
}
1700446277
1700446278
(2)扩展枚举类
1700446279
1700446280
由于Enum类定义的方法基本上都是final类型的,所以不希望被覆写,那我们可以学习String和List,通过增加一个contains方法来判断是否包含指定的枚举项,然后再继续转换,代码如下:
1700446281
1700446282
enum Season{
1700446283
1700446284
Spring, Summer, Autumn, Winter;
1700446285
1700446286
//是否包含指定名称的枚举项
1700446287
1700446288
public static boolean contains(String name){
1700446289
1700446290
//所有的枚举值
1700446291
1700446292
Season[]season=values();
1700446293
1700446294
//遍历查找
1700446295
1700446296
for(Season s:season){
1700446297
1700446298
if(s.name().equals(name)){
1700446299
1700446300
return true;
1700446301
1700446302
}
1700446303
1700446304
}
1700446305
1700446306
return false;
[
上一页 ]
[ :1.700446257e+09 ]
[
下一页 ]