关于枚举式单例的一些详解
来源:互联网 发布:修改图片的软件 编辑:程序博客网 时间:2024/06/05 04:39
之前写过一篇单例模式,没有说明为什么枚举可以反反射,反序列化!这里详细解释下,
首先枚举都是默认集成java中Enum类的,而在枚举类中禁用了readObject等一系列方法,我们知道,如果一个类继承Serizable接口,呢么就不可能是单例,因为每次调用readObject方法都会返回一个新的实例,所以,完全可以通过序列化来破坏单例,但是枚举类有其自己的一套序列化方式,禁用readObject方法,所以,不会因为序列化而破坏单例,再说为什么枚举是单例,因为当一个类为enum的时候,其会被编译为public static final T extends Enum,注意final,所以其首先是不能被继承的,其次,既然所有的enum都继承Enum类,呢么自然要看下Enum类,我们发现,只有一个构造,然而再看其注释的时候,给我们说,单独的构造方法,程序员无法调用此构造方法,为什么?往深处自己追追源码把,这回没开软件,懒得追!
我们再说下,为什么就可以反反射,我们知道,我们反射在创建实例的时候是调用的Class类下面的方法,呢么我们看下Class类,追其源码,我们会发现其把Class类和Enum类排除了,也就是只要是这两个类,会直接抛异常!如此,就反反射了,除非你自己写一套API,把java底层推翻了!
阅读全文
0 0
- 关于枚举式单例的一些详解
- 关于枚举的一些理解
- 关于枚举的一些用法
- 关于枚举的一些总结
- 关于枚举类型的一些总结
- swift关于枚举 字典 集合的一些整理
- 关于一些暴力的事情:枚举(1)
- 关于unity中枚举enum的一些小见解
- 枚举的一些用法
- 关于枚举的种种
- 关于枚举的使用
- 关于枚举的操作
- 关于java的枚举
- 关于枚举的理解
- 关于枚举的理解
- Java枚举的详解
- 学习枚举的一些总结
- 枚举的一些常用操作
- MFCC原理及代码
- 近似排列计数
- Gym 101142K King's Heir
- Java基本数据类型——Java基本数据类型汇总、自动类型转换(指导图)、强制类型转型乱码问题、运算时类型提升容易犯的错误常见问题汇总
- MLaPP Chapter 2 Probability 概率论
- 关于枚举式单例的一些详解
- SCRY.INFO無域日本福冈一场全球极客交锋
- 钦妹的苹果树appletree
- Redis 数据淘汰机制
- 古典密码——置换密码
- NOIP2014 Day1
- 十月一国庆节、中秋节,聊聊十一放假的那点事!!
- C++继承和共有、私有、保护继承
- Spring AOP详解