滁州易推,您最值得信赖的滁州网站建设公司
  13687364536     913676469@qq.com      网站地图 
RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-18:30
推荐扫一扫添加微信咨询
微信二维码
关闭右侧工具栏

营销知识

Java枚举类型原理
  • 浏览量:
  • 发表时间:2019-05-28 06:37:59
  • 来源:易推网络

Enum类型是Java 5中的一种新数据类型,可帮助我们更快,更安全地实现枚举。

当我们定义枚举常量时,回想一下以前的做法:

尽管这个定义运作良好,但仍存在许多不足之处。例如,如果您不小心将MONDAY和TUESDAY都设置为2,编译器将不会报告错误,但很难。进行调查。

在Java 5之后,我们可以使用以下定义定义枚举类型。 并且可以在程序中使用,这无疑会大大提高程序的安全性。

我们知道编程语言是为了向前兼容而设计的,这意味着后续语言功能实际上是语法Sugar实现的,那么枚举类型的内部实现原理是什么?我们通过命令反编译上面的枚举类Day,然后重写反编译代码以使其更容易阅读,最后得到以下反编译代码。

通过阅读上面的反编译代码,我们可以总结枚举类型的实现:

枚举类型的构造函数是private,带有两个参数String和int,表示枚举的名称和序列号。序列号按照定义的升序排列。

每个枚举代表一个枚举类实例,nd是静态和final,在枚举类Initialize in的静态代码块中,并且有一个$ VALUES数组来保存所有枚举。

枚举对象的名称枚举可以使用valueOf方法完成。

VALUES \(\)方法返回VALUES数组被篡改。

接下来,让我们分析自定义枚举类型继承的Enum类

通过阅读上面的Enum抽象类,我们可以总结其功能:

来自equals方法,每个枚举只等于它自己,并且没有等效的相等枚举。

克隆方法告诉您枚举对象不允许克隆,这可以保证每个枚举都是唯一的。

从compareTo方法中,枚举只能与相同类型的枚举进行比较,结果是两者之间的差异。枚举顺序。 。

finalize方法告诉您枚举类不允许实现finalize方法,这与安全性有关枚举。

readObject方法和readObjectNoData方法知道枚举对象不允许反序列化,这也确保了每个枚举。

从上面的分析,我们可以看到枚举的最大特点是唯一性,我们可以找到只有一个枚举的枚举元件。无意中满足单例模式的要求,特别是:

枚举类是不可变的,这可以防止单个类被继承。

枚举类型的构造函数是私有的,因此无法主动创建相应的单例对象。

枚举的元素是公共静态最终类型,并在加载类时在静态代码块中初始化。相当于单身模式的邪恶模式。

枚举类对象不允许克隆,这可以保证每个单例都是唯一的。

枚举类对象不可反序列化,这也确保每个单例都是唯一的。

因此我们可以使用单例的枚举类型来实现单例模式。实际上,正如“有效Java”一书中所述:单例的枚举类型已经成为实现Singleton的最佳方式。

注意:值得一提的是,我们从上面的分析中知道每个枚举都是一个对象,因为它是一个对象,那么它的内存比基本类型大得多,这是枚举类型的缺点,因此不建议在Android开发中使用枚举类型,而是使用相同的注释加上int或String。

本文由滁州易推网络公司提供,公司主要提供全椒网站建设业务,站内文章大部分为原创,部分转载于网络,若转载请标注 /article/17_121.html

上一篇:网站建设是一项技术活动。不要只看价格,价值更重要。
下一篇:过滤关键字可以提高您的网站转化率