Java枚举类型 enum

定义

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值