定义

An enum type is a special data type that enables for a variable to be a set of predefined constants. The variable must be equal to one of the values that have been predefined for it.

枚举类型是一种特殊数据类型,能够为一个变量定义一组预定义的常量。变量必须等于为其预定义的值之一。

枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。

枚举是特殊的类,可以拥有成员变量和方法。

使用

public enum Direction {
//实例列表末尾的分号是可选的
NORTH, SOUTH, EAST, WEST
}

Direction类型的实例可以按静态变量的方式引用:Direction.NORTH,Direction.EAST

在开发中枚举可以用来定义常量

@Getter
public enum TaskStatueEnum {
NOTSTARTEND(1,"未开始"),
EXECUTIONINPROGRESS(2,"执行中"),
COMPLETED(3,"已完成");
  
  private int val;
  private String descript;
  TaskStatueEnum(int val, String descript)
  {
   this.val=val;
   this.descript=descript;
  }   public static TaskStatueEnum fomart(int val) throws Exception {
  for(TaskStatueEnum property: TaskStatueEnum.values())
  {
   if(val==property.val)
   {
   return property;
   }
   }
   throw new Exception(MessageFormat.format("找不到对应{0}的任务状态",val));
  }
}

详解和注意

1>.枚举类型都隐式继承了java.lang.Enum类,因此不能继承其他类,但可以实现接口;

​ 2>.枚举类型只能有私有的构造方法(java运行时创建,外部不能进行实例化);

​ 3>不能泛型化;

​ 4>当有字段和方法时,枚举常量的列表必须以分号结尾;

​ 5>编译器在创建枚举时会自动添加一些特殊方法。例如,它们具有一个静态values方法。

通过javap命令反编译class文件可以看出,并且它是被final修饰的,不能被继承。

​$ javap Color.class
Compiled from "Color.java"
public final class com.zuoquan.lt.basic.enums.Color extends java.lang.Enum<com.zuoquan.lt.basic.enums.Color> {
public static final com.zuoquan.lt.basic.enums.Color RED;
public static final com.zuoquan.lt.basic.enums.Color GREEN;
public static final com.zuoquan.lt.basic.enums.Color BULE;
public static com.zuoquan.lt.basic.enums.Color[] values();
public static com.zuoquan.lt.basic.enums.Color valueOf(java.lang.String);
public int getIndex();
public void setIndex(int);
public java.lang.String getName();
public void setName(java.lang.String);
static {};
}

values方法使用:

Color[] colors = Color.values();
for (Color color : colors) {
System.out.println(color.getName());
}

​ 6>父类Enum中的方法

S.N. Method & 描述
1 protected Object clone() 该方法将抛出CloneNotSupportedException异常
2 int compareTo(E o) 这种方法比较枚举指定对象的顺序.
3 boolean equals(Object other) 此方法返回true,如果指定的对象是相等于枚举常量.
4 protected void finalize() 此方法返回枚举类不能有finalize方法.
5 Class getDeclaringClass() 此方法返回此枚举常量的枚举类型相对应的类对象.
6 int hashCode() 此方法返回枚举常量的哈希码.
7 String name() 此方法返回枚举常量的名称,正是因为在其枚举声明中声明.
8 int ordinal() 此方法返回此枚举常量的序数(其枚举声明中的位置,其中初始常量被分配一个序号零).
9 String toString() 此方法返回枚举常量的名称,在声明中所包含的.
10 static > T valueOf(Class enumType, String name) 此方法返回具有指定名称的指定枚举类型的枚举常量.

https://blog.csdn.net/javazejian/article/details/71333103

最新文章

  1. S5PV210_串行通信
  2. 重构与模式(Refactoring to Patterns)-读书笔记
  3. C++模板机制总结
  4. 《ImageNet Classification with Deep Convolutional Neural Networks》 剖析
  5. HIHO线段树(成段)
  6. sqlserver监控阻塞(死锁)具体情况
  7. Oracle系列教程
  8. IE6和IE8细节问题
  9. HA高可用配置
  10. RESTful 架构
  11. Net Core在Linux环境
  12. 在centos上部署java WEB环境
  13. Jedis对Redis的常用命令操作
  14. windows查看进程信息
  15. jenkins构建任务后发送邮件
  16. Linux_Ubuntu_C++编程_如何完成一个C++编写,调试,运行。
  17. javascript的作用域和闭包(三)闭包与模块
  18. 微信小程序动态数据跑马灯组件编写
  19. 网易云首席安全架构师谈安全新形势:DDOS两三天,游戏玩家数从几万降到几百
  20. Twenproxy介绍

热门文章

  1. java-NIO-DatagramChannel(UDP)
  2. 使用JavaScript带你体验V8引擎解析字符串过程
  3. Codeforces Gym101246H:``North-East&#39;&#39;(LIS+思维)
  4. django基础知识之上传图片:
  5. Java学习笔记之---集合
  6. py+selenium+IE10【IE已停止工作】【已解决】
  7. python爬取新浪股票数据—绘图【原创分享】
  8. ISTQB名词辨析
  9. python中变量在内存中的存储与地址关系解析、浅度/深度copy、值传递、引用传递
  10. springboot项目快速构建