当前位置:   article > 正文

Java -枚举的使用_java枚举的使用

java枚举的使用

一、背景及定义

枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式:

public static int final RED = 1;
public static int final GREEN = 2;
public static int final BLACK = 3;
  • 1
  • 2
  • 3

但是常量举例有不好的地方,例如:可能碰巧有个数字1,但是他有可能误会为是RED,现在我们可以直接用枚举
来进行组织,这样一来,就拥有了类型,枚举类型。而不是普通的整形1

public enum TestEnum {
	RED,BLACK,GREEN;
}
  • 1
  • 2
  • 3
  • 优点:将常量组织起来统一进行管理
  • 场景:错误状态码,消息类型,颜色的划分,状态机等等…
  • 本质:是 java.lang.Enum 的子类,也就是说,自己写的枚举类,就算没有显示的继承 Enum ,但是其默认继承了这个类。

二、枚举类的创建

在这里插入图片描述

public enum TestEnum {
    RED,BLACK,GREEN;
}
  • 1
  • 2
  • 3

三、枚举类的使用

3.1、调用枚举中的量

在这里插入图片描述

3.2、switch 语句

在这里插入图片描述

3.3、枚举类的常用方法

方法名称描述
values()以数组形式返回枚举类型的所有成员
ordinal()获取枚举成员的索引位置
valueOf()将普通字符串转换为枚举实例
compareTo()比较两个枚举成员在定义时的顺序

3.3.1、values() – 以数组形式返回枚举类型的所有成员

在这里插入图片描述

3.3.2、ordinal() 获取枚举成员的索引位置

在这里插入图片描述

3.3.3、valueOf() 将普通字符串转换为枚举实例

在这里插入图片描述

3.3.4、compareTo() 比较两个枚举成员在定义时的顺序

在这里插入图片描述

3.4、枚举对象

在这里插入图片描述

四、枚举优缺点

优点:

  1. 枚举常量更简单安全 。
  2. 枚举具有内置方法 ,代码更优雅

缺点:
3. 不可继承,无法扩展,【从构造的方法的私有性就能看出来】

五、枚举和反射

枚举是否可以通过反射,拿到实例对象呢? -这道题是2017年阿里巴巴曾经问到的一个问题题

篇博文反射说到:任何一个类,哪怕其构造方法是私有的,我们也可以通过反射拿到它的实例对象,那么枚举的构造方法也是私有的,我们是否可以拿到呢?接下来,我们来实验一下:
在这里插入图片描述

六、总结

  • 1、枚举 将常量组织起来统一进行管理,更简单安全。
  • 2、枚举本身就是一个类,其构造方法默认为私有的,且都是默认继承于 java.lang.Enum
  • 3、 枚举可以避免反射和序列化问题:枚举类非常安全!
  • 4、不可继承,无法扩展。
  • 5、枚举具有内置方法 ,代码更优雅
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/377175
推荐阅读
相关标签
  

闽ICP备14008679号