文章前记

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

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

努力!做一个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

c枚举类型enum例题_一篇文章让你详细了解Java中Enum枚举类的使用相关推荐

  1. java中抽象接口_一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  2. 有关python方面的论文_一篇文章可以带你理解python中的类

    继续上一章的内容,上一章说到了python的核心部分-创建对象的各种名词的定义,包括:对象,类,多态,封装,继承,接口和内省,面向对象设计.还有不清楚的可以review一下前文.python核心部分创 ...

  3. 一篇文章让你搞懂Java中的静态代理和动态代理

    文章目录 什么是代理模式 代理的优缺点 静态代理 动态代理 InvocationHandler 接口 和 invoke 方法介绍 静态代理和动态代理的区别 什么是代理模式 代理模式是常用的java设计 ...

  4. go 调用其他文件函数_一篇文章让你了解Go语言中方法Methods的使用内幕

    概述 Go语言中的方法只不过是一个带有接收器的函数.接收器是某个特定类型(如struct)的实例,或是任何其他自定义类型的实例.所以基本上,当你把函数附加到类型上时,该函数就成为这个类型的一个方法.方 ...

  5. mql 查询多结果_一篇文章带你全面掌握Excel中的各种数据查询知识与技巧

    数据查询是Excel数据处理中的一项核心业务,也是日常办公中使用频率非常高的一项操作.数据查询业务需求多,而且具有较强的技巧性,因此它也是职场必学的一门技能. 本篇文章从最基本的数据查询的概念讲起,逐 ...

  6. matlab基于dct的图像压缩编码解码_一篇文章搞定DCT在JPEG中的本质

    前序傅立叶变换,离散傅立叶变换,推荐这个回答的介绍 想和大家讨论一下jpeg中的dct变换,为什么有效?它有什么更深层次的本质吗?​www.zhihu.com 全篇参考下文,英文较好可以直接看. uc ...

  7. 一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  8. (面经总结)一篇文章带你完整复习 Java 中并发关键字(CountDownLatch/CyclicBarrier/Semaphore/Volatile)

    文章目录 一.倒计数器:CountDownLatch 二.循环栅栏:CyclicBarrier 三.信号量:Semaphore 四.volatile 关键字的作用 一.倒计数器:CountDownLa ...

  9. 一篇文章带你搞定 Java 中 @Target、@Documented 和 @Inherited 注释

    文章目录 一.@Target 二.@Documented 注释 三.@Inherited 注释 一.@Target 如果一个Annotation 没有明确地指明定义的位置,则可以在任意的位置使用,例如 ...

最新文章

  1. 树莓派:linux库概念及相关编程(面试重点):以及USB端口号找到不的情况
  2. tf.nn.softmax参数详解以及作用
  3. SAP-FICO学习笔记
  4. 零基础学习WinCE开发
  5. 从关系数据库到Elasticsearch的索引数据– 1
  6. 单例设计模式-双重检查
  7. 作者:周绮凤,女,博士,厦门大学自动化系副教授。
  8. ECSHOP2.7.3删除后台左侧菜单中的云服务中心
  9. android中gridview实现动态表格,Android--GridView实现动态文字排版
  10. centos7抢先安装docker1.0
  11. c# 对象json互相转换_能够将Excel 数据转换成Json格式的实用工具 excel2json
  12. Mybatis-generator自动生成
  13. 【python】程序结构
  14. 百度地图的反地址解析(通过经纬度查询地址信息)
  15. 华为发放20亿元奖金,抗击美国断供,奖励员工加班奋斗,网友:他们应得的...
  16. 抖音挑战微信能赢么?
  17. Android向服务器发送图片(一)
  18. Centos6.6下编译安装Apache2.2.31
  19. blender中的灯光和相机
  20. 智慧运维解决方案-最新全套文件

热门文章

  1. 微信支付的坑 返回值 -1
  2. Building Java Projects with Gradle
  3. 走差异化发展路线思想
  4. jQuery实现用户注册的表单验证
  5. 安装终端服务和终端服务授权,激活终端服务授权
  6. 使用Latex排版一篇IEEE文章
  7. 算法练习----java字符全排列
  8. 深入浅出详细介绍Java异常,让你茅塞顿开般的感觉
  9. Codespaces
  10. 构造器与一般方法对比