龙空技术网

一篇文章让你详细了解Java中Enum枚举类的使用

架构研究所 179

前言:

目前各位老铁们对“枚举怎么用java”可能比较珍视,大家都需要了解一些“枚举怎么用java”的相关文章。那么小编也在网摘上汇集了一些有关“枚举怎么用java””的相关内容,希望大家能喜欢,同学们一起来学习一下吧!

文章前记

程序员工作久了便可能整日忙碌于“增删改查”中,迷失方向,毫无进步。

该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路!

努力!做一个NB的Coder!

本文是Java枚举类型的第三篇文章,对于枚举类型的实现原理和包含的方法特性不了解的小伙伴可以先去参考历史文章中的《Java中的枚举类型(Enum)详解》和《详解Java枚举类型(Enum)中的方法》两篇文章。

接下来,我们将深入了解枚举类的使用。

1 扩展枚举值与自定义构造函数

之前,我们讨论枚举类时,主要是针对最简单的枚举类型。每个枚举值只有一个字符串,如:

但是实际使用中,我们可能想给每个枚举值赋予更多的含义,例如,给每个季节一个中文说明和编码等。

即实现:

那这样的操作是可以的么?答案是肯定的!可以操作。但是,因为最简单的枚举类型调用了默认的构造方法,如果我们要增加新的含义,则需要自己覆盖原来的构造方法。操作如下:

我们在枚举类中增加了name/code两个属性,并重新编写了构造方法。实现了我们的要求。

我们编写测试函数:

得到如下结果:

2 关于覆盖enum类方法

我们知道,枚举类最终继承了java.lang.Enum抽象类,那么我们能够覆盖java.lang.Enum抽象类中的方法么?

这个当然是可以的。其实在上面的代码中,笔者已经覆盖了java.lang.Enum抽象类中的toString()方法,并得出了自定义的输出。

3 枚举类中定义抽象方法

既然编译器最终将每个枚举值声明为枚举类的实例,那我们能在枚举类中声明抽象方法让枚举值去实现么?

听起来有些不可思议,其实也是可以的。我们在枚举类Season中声明了一个抽象方法sayHello()。然后在创建枚举值时,就必须实现该抽象方法。最终的代码如下:

然后运行以下测试代码:

得到输出:

4 总结

通过这篇文章,我们知道在扩展了构造方法的情况下,我们可以为每个枚举值注入更多的属性。并且,枚举类作为java.lang.Enum抽象类的子类,可以重写父类的方法。同时,每个枚举值作为枚举对象的实例,可以实现枚举对象中定义的抽象方法。

最终,通过《Java中的枚举类型(Enum)详解》《详解Java枚举类型(Enum)中的方法》和本文,我们从原理、特性、使用三个方面对枚举类型进行详细的介绍,该系列到此结束。

大家有相关的问题需要讨论,可以留言互动。

—END—

分享让你从程序员进阶架构师的原创干货!

欢迎关注我们,不错过每期的原创干货!

▼往期精彩文章▼

Java中的枚举类型(Enum)详解

详解Java枚举类型(Enum)中的方法

Java为何能将读与写封装为一个原子操作

Java原子化读并且写操作中存在的问题

漫谈MCU与PLC

标签: #枚举怎么用java