关于使用枚举

来源:互联网 发布:sql语言怎么查询数据 编辑:程序博客网 时间:2024/06/14 08:13
     最近有以前的学生跟我说工作现在不好找,我就对他说,要相信自己的能力,别人一个并发都不了解的,连框架都要照着百度搭的人都能做架构师,你怕什么呢?只要自己掌握的技术够深,没有你找不到的工作。
    这是题外话了,下面我来给大家讲下关于枚举的生命周期以及应用枚举的优势。
背景:

关于在一个项目中项目经理将枚举常量都存储在数据库(所谓的数据词典)中,然后在读取出来缓存到缓存中,所引发的思考。

质疑:
    想必能读懂我写的东西的人应该都知道,常量数据被读取到缓存当中后,你势必不会去改变缓存中的常量内容,那么读取到缓存中的数据
一直都会占据内存,不会被java垃圾回收机制捕捉而被释放。
下面我们看下java 枚举类的使用机制及其优势:

解析:
1.enum 枚举是java 1.5以后出来的产物,1.5以前都是使用public static final来定义我们的常量,为什么Sun会推出Enum枚举呢?因为,我们单纯的public static final常量在很多时候,我们都无法准确的了解它的意义,比如定义了一个int类型的常量1,代表性别男,那么如果没有注释,谁知道这代表什么意义呢?而且谁能保证开发人员不会滥用这些常量呢?

2.如何定义枚举:这个,是个学编程的都会吧,这里略。。。

3.枚举的分析:
    我们可以去看下jdk源码,Enum枚举构造方法都是protected,这说明我们的枚举其实都是单例模式的,而且在使用时才会在运行中创建我们的枚举对象,很多时候,我们都是在{ }代码块中进行使用枚举,那么它的优势就显示出来了!

    在这里,大家应该就比较清楚了,一旦枚举在程序中使用完毕,那么创建出来的枚举对象就会失去引用,如果该枚举类没有继续被引用,那么java回收机制就会有可能会将其回收,这样就不会刻意占据我们的内存,枚举的好处不言自明。

4.Enum枚举还可以自己定义方法,可以进行相关运算得到自己想要的结果。


如果有写得不对的地方,欢迎吐槽!

原创粉丝点击