网站首页 > java教程 正文
面试
面试问枚举的真的很少,但实际开发中多用枚举可以大大提高代码优雅度和安全度
基础知识准备
枚举、
Enum源码分析
通过源码我们来复习下枚举特性
- 不会看源码的程序员是码农(扎心了)
例子
通过例子来复习下,枚举那些方法那些特性吧
枚举基类
- 它是一个可以排序、可以序列化的
- jdk1.5才开始支持
values()
知道枚举了,怎么遍历枚举里面所有值了?
用枚举的values()方法
业务场景:当你需要把所有状态(枚举值),带到后端去查询SQL时,你就不要一个个去赋值啦
values()返回的是枚举值的数组,非常实用
枚举方法
- 枚举类方法
- 枚举值的方法
枚举也就一个类,当然也能有方法
如上面例子就提供了一个通过code找枚举值的方法(枚举类方法)
枚举值的方法(枚举值的方法)
必须通过枚举具体值调用
上面例子的
枚举值一般都需要提供code、desc属性及对应get方法
枚举相等
枚举源码里==和equals是一样的,所有实际开发中==可以用的
枚举是不能被clone的
请见下面源码
阻止默认反序列化
请见下面源码
枚举的构造方法
参数名称、序数
你如果想把银联排序第一,只用在枚举类中定义的顺序调整下就好
业务场景:在讲下实际应用,当前端有下拉框什么类型值等,就可以后端定义相应的枚举类,
一个枚举类对应一个下来框,这样业务属性增加,前端不用改后端只用增加枚举值就好了,扩展维护很方便,顺序也可以灵活控制(完美)
不能反射创建枚举
- java.lang.reflect下的Constructor源码,异常描述很清楚
总结
- 枚举是在JVM层保证完美单例
- 枚举特性不是特别多,大家好好记住这些
- java程序员利用枚举写出高逼格优雅代码可以有
猜你喜欢
- 2024-10-06 关于Java中枚举Enum的深入剖析(java中枚举类型的使用)
- 2024-10-06 常用类及枚举类(一)(枚举类和普通类的区别)
- 2024-10-06 JAVA ---- 枚举/注解/反射(java中枚举的作用)
- 2024-10-06 深入剖析Java Enum类型(javaenum使用实例)
- 2024-10-06 Java enum——不一样的枚举对象(java 枚举使用)
- 2024-10-06 Java的enum的用法详解(java enum使用)
- 2024-10-06 学习廖雪峰的JAVA教程---java核心类(枚举类)
- 2024-10-06 Java枚举(JAVA枚举类型怎么用)
- 2024-10-06 java高级特性之泛型和枚举(java 泛型实现)
- 2024-10-06 给大伙讲一讲枚举的使用以及原理(枚举是干嘛的)
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)