java枚举类型总结
2024-08-28 21:09:26
java中的枚举类型是jdk1.5新增的一个东西,其本质是一个java.lang.Enum类的子类,每个枚举项是一个静态常量对象,由编译器为每个枚举项分配ordinal和name,其中ordinal是枚举项声明时候的顺序,从0开始,name是枚举项的名称,可以通过同名无参方法name()和ordinal()来获取,这两个方法都是final的。
我们还可以通过类型的静态valueOf方法传入一个字符串返回字符串对应的枚举值,需要说明的是每个枚举值在内存中只有一份,并且禁止被clone。Enum类对equals方法的实现也是直接比较地址值(用==来比较),并设置成了final禁止被继承,同样hashCode()也是final的。
既然是类和对象,那么枚举就具备类与对象的一切功能,可以定义实例变量和方法,可以实现接口,可以声明抽象方法然后在每个枚举值中实现(有点类似于匿名类),也可以修改编译器默认调用的构造方法,来实现定制化的枚举需求。
因为枚举类和枚举项本质就是类与对象,加上其独特的语法糖和全局唯一的性质,它可以被用来实现线程安全的单例。这也是《effective java》中推荐的单例模式实现方案。
最新文章
- Flume NG Getting Started(Flume NG 新手入门指南)
- web前端基础知识-(三)JavaScript基本操作
- java 深入技术五 (泛型)
- Codeforces Round #FF(255) DIV2
- Maven(二)使用eclipse创建maven多模块项目
- Request获取URL地址相应方法
- DDD:如何更好的使用值对象
- ESB概述
- Oracle查询出最最近一次的一条记录
- jquery的API查看 / prepend、prependTo、append、appendTo的用法
- C# 之 AES加密源码
- 通常编译亲测56Y国际象棋源代码,精仿56Y国际象棋完整的源代码下载!
- java泛型探索——小特性
- Data Lake Analytics + OSS数据文件格式处理大全
- C语言面试程序阅读整理
- PHP7--PHP的一次重大变革
- linux下批量查找UTF-8的BOM文件,并去除BOM
- Crontab和sudo中无法使用TensorFlow ImportError libcublas.so.9.0
- [面试题]vi/vim快捷键及面试题系列
- easyui Dialog 去边框
热门文章
- 13_日期时间、Math、枚举
- 本地Pycharm将spark程序发送到远端spark集群进行处理
- py kafka
- 其实每个行业都有各自的辛苦,好的程序员并不累,他们乐此不疲(见过太多在职位事业、人生方向上随转如流的人,累了疲乏了就去做别的事情了。必须有自己的坚守和立足的点,自我驱动,否则沦为在别人的体制制度中被驱赶一生)good
- SpringCloud Hystrix/Feign 整合 Hystrix 后首次请求失败解决方案
- MySQL AND 和 OR 联合使用带来的坑
- Unity性能优化-DrawCall
- Trie树(字典树)-题解 P2580 【于是他错误的点名开始了】
- jQuery入门简述
- Redis 测试 数据类型