java 源码 枚举_Java源码系列(3):枚举类型

点击上方,轻松关注!!

hello,everybody。没想到今天会推文吧,赶紧夸我,勤快的小仙女。

051293a586afd43eb85af5f23bba94c7.png

好,我们今天认真的讲一下枚举类型,大家肯定都用过,比如这样的

//定义枚举类型

enum Day {

那我们先来看一下他的概念是啥,枚举类型是Java5新增的特性,他是一种特殊的数据类型,是因为他既是一种类(class)类型,又比普通的类型多了写特殊的约束。

1.为什么要使用

比如刚才举的例子,如果我们不用枚举类型也行,那就定义常量就行,如下图:

59dccab01afd4bad4038b47c57b3d634.png

但是这样做是存在缺点的,比如我在里面写错啦一个单词,如下图:

40fb4205c0728fc79b3dc13152ba00d1.png

他是不提示我的,可是我如果用枚举,他就可以提示我数据重复,如下图:

f95a623ef2679b80a1771f5a1b6141bd.png

还有就是不用枚举类型,代码不够简洁,冗余代码太多。

2.枚举是什么

我们先编译一个上面写的Day.java文件,然后反编译他,看他编译出来的结果是什么,如下图:

98a78c6228286a38d997a3e616462919.png

从上图我们可以看出反编译出来Day是一个final类型,也就是不能被其他类继承,并且他是继承于Enum类的。如果我们定义一个枚举类型,其实Java替我们做了定义常量这件事情,也就是上图1的区域。区域3,4是由编译器插入的,下面的图借的人家的。

228eaf2105f6fc79b888375fb5b68301.png

值得注意的是这两个方法是有编译插入的,所以他只停留在本类的层面。不信咱就试试

4eca864b5c4e2d4eb6aa934d0c3f9e24.png

3.阅读源码

我们找到Enum类,看一下他里面有哪些方法,以及各方法的作用。

876088e6508483d7f0e575b16a1bf622.png

compareTo:比较我的序数与你的序数之间的差别。

equals:比较枚举类型是否相等。

getDeclaring:与该枚举类型值相对应的类。

ordinal:返回枚举常量的序数。

valueOf:返回带指定名称的指定枚举类型的枚举常量,如果不存在,会直接报错,如下图中标红区域。

空讲没意思,我们来练练。

5f3f46be86dd6943fee32b913680de3b.png

a05322abb2482d0262185add4ba5ce2c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值