java枚举高级用法(java里枚举非常实用的3个方法)
java枚举高级用法(java里枚举非常实用的3个方法)枚举也就一个类,当然也能有方法values()返回的是枚举值的数组,非常实用知道枚举了,怎么遍历枚举里面所有值了?用枚举的values()方法业务场景:当你需要把所有状态(枚举值),带到后端去查询SQL时,你就不要一个个去赋值啦
面试面试问枚举的真的很少,但实际开发中多用枚举可以大大提高代码优雅度和安全度
基础知识准备枚举、
Enum源码分析通过源码我们来复习下枚举特性
- 不会看源码的程序员是码农(扎心了)
通过例子来复习下,枚举那些方法那些特性吧
枚举基类- 它是一个可以排序、可以序列化的
- jdk1.5才开始支持
知道枚举了,怎么遍历枚举里面所有值了?
用枚举的values()方法
业务场景:当你需要把所有状态(枚举值),带到后端去查询SQL时,你就不要一个个去赋值啦
values()返回的是枚举值的数组,非常实用
枚举方法- 枚举类方法
- 枚举值的方法
枚举也就一个类,当然也能有方法
如上面例子就提供了一个通过code找枚举值的方法(枚举类方法)
枚举值的方法(枚举值的方法)
必须通过枚举具体值调用
上面例子的
枚举值一般都需要提供code、desc属性及对应get方法
枚举相等枚举源码里==和equals是一样的,所有实际开发中==可以用的
枚举是不能被clone的请见下面源码
阻止默认反序列化请见下面源码
枚举的构造方法参数名称、序数
你如果想把银联排序第一,只用在枚举类中定义的顺序调整下就好
业务场景:在讲下实际应用,当前端有下拉框什么类型值等,就可以后端定义相应的枚举类,
一个枚举类对应一个下来框,这样业务属性增加,前端不用改后端只用增加枚举值就好了,扩展维护很方便,顺序也可以灵活控制(完美)
不能反射创建枚举- java.lang.reflect下的Constructor源码,异常描述很清楚
- 枚举是在JVM层保证完美单例
- 枚举特性不是特别多,大家好好记住这些
- java程序员利用枚举写出高逼格优雅代码可以有