enum枚举笔记

enum枚举笔记
文章目录枚举基础知识name和name()是一个意思吗?枚举的遍历和匹配枚举的valueof如果找不到直接会抛异常枚举如何获取一个对象枚举类里写静态方法进行判断(小技巧)枚举算是比较基础的知识了但是实际理解的还不够记录下。每个枚举对象相当于一个构造器。枚举基础知识ordinal()# 自带方法返回下标默认从0开始这个方法是final方法name()# 自带方法返回对应字面值这个方法也是final方法name()和toString()返回的结果是一样。枚举属性定义需要用public方法否则外面的类看不到。enumQRZT{CONFIRM(1,确认,false),UNCONFIRM(2,未确认,true);privateStringcode;privateStringname;privatebooleandefaultFlag;privateQRZT(Stringcode,Stringname,booleandefaultFlag){this.codecode;this.namename;this.defaultFlagdefaultFlag;}}name和name()是一个意思吗?输入.自动带出方法时带出name和name()方法真是怪了愣了一下下。想了下才明白name()是自带的方法返回的是字面值。name本身是没有的属于自定义属性需要构造了才有。枚举的遍历和匹配匹配代码CustomEnumcustomEnumArrays.stream(CustomEnum.values()).filter(t-t.name().equals(type.toUpperCase())).findFirst().orElse(null);log.info(customEnum{},customEnum);枚举的valueof如果找不到直接会抛异常如果找不到直接就会报错StringtypeCCC;CustomEnumcustomEnumCustomEnum.valueOf(type);这个值如果匹配不到直接就会抛异常后面不用再加if(nullcustomEnum)。所以如何判断枚举中是否包含某个值呢?valueOf()其实就是可以的或者遍历也可以如果想要优雅也可以封装个工具类。枚举如何获取一个对象由上面来看就比较简单了。1、如果知道名字直接写出来如 DemoEnum.AAA。2、valueOf(名字)方法如 DemoEnum.valueOf(BBB)。3、values[下标]如 DemoEnum.values[1]。枚举类里写静态方法进行判断(小技巧)一般枚举类都是用于定义实际也可以写个判断方法例如入参是String要进行多个判断在枚举类里面写就好。