Java枚举类

枚举其实是个特殊的 Java 类,创建枚举需用enum关键字,枚举类都是java.lang.Enum的子类,java.lang.Enum是一个抽象类,枚举类型符合通用类型模式Class Enum<E extends Enum<E>>,这里的 E 表示枚举类型的名称,枚举类的每个值都会映射到protected Enum(String name, int ordinal)构造函数中,每个值(如NumEnum中的ONE)的名称都被转成字符串, ordinal 表示被创建的顺序(默认是0,1,2,3...)。

枚举类enum定义如下:

enum NumEnum{
    ONE,TWO,THREE,FOUR
}

实际上是调用了如下方法:

new Enum<NumEnum>("ONE",0);
new Enum<NumEnum>("TWO",1);
new Enum<NumEnum>("THREE",2);
new Enum<NumEnum>("FOUR",3);

常用方法如下:

//比较此枚举与指定对象的顺序
int compareTo(E o) 

//返回与此枚举常量的枚举类型相对应的 Class 对象
Class<E> getDeclaringClass() 

//返回此枚举常量的名称
String name() 

//返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)
int ordinal() 

// 返回枚举常量的名称
String toString()

//返回带指定名称的指定枚举类型的枚举常量
static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 

NumEnum调用常用方法如下:

System.out.println(NumEnum.ONE.compareTo(NumEnum.FOUR));// -3
System.out.println(NumEnum.ONE.getDeclaringClass());//class com.jeeno.test.NumEnum
System.out.println(NumEnum.TWO.name());//TWO
System.out.println(NumEnum.THREE.ordinal());//2
System.out.println(NumEnum.THREE.toString());//THREE
System.out.println(NumEnum.ONE.valueOf("FOUR"));//FOUR

实际上enum就是一个class,只不过 Java 编译器帮我们做了语法的解析和编译而已。可以把enum看成是一个普通的class,它们都可以定义一些属性和方法,不同之处是:enum不能使用extends关键字继承其他类,因为enum已经继承了java.lang.Enum(java是单一继承)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一 Java 枚举7常见种用法DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发...
    欢乐时光欢乐你我阅读 887评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,021评论 0 3
  • 伴随共享单车的火热兴起,雨伞、充电宝、马扎等各种物品都蹭上了共享经济的热点,了它们的共享化道路。现今,共享汽...
    佳方有为阅读 328评论 1 0
  • 2017.2.13 真是213的一天,店里的wifi今天卡的不行,中午外卖送错了不说,快下班了要去入账…… 结果呢...
    丶青木阅读 207评论 0 0