Java中继承java.lang.Enum
来源:互联网 发布:led显示屏软件通用版 编辑:程序博客网 时间:2024/06/06 10:51
Java 5新增的enum关键词,可以定义枚举类。该类是一个特殊的类,可以定义自己的field、方法、可以实现接口,也可以定义自己的构造器。
但枚举类使用enum定义后在编译后默认继承了java.lang.Enum类,而不是普通的继承Object类。enum声明类继承了Serializable和Comparable两个接口。且采用enum声明后,该类会被编译器加上final声明(同String),故该类是无法继承的。枚举类的内部定义的枚举值就是该类的实例(且必须在第一行定义,当类初始化时,这些枚举值会被实例化)。
由于这些枚举值的实例化是在类初始化阶段,所以应该将枚举类的构造器(如果存在),采用private声明(这种情况下默认也是private)。
另外补充一点,由于JVM类初始化是线程安全的,所以可以采用枚举类实现一个线程安全的单例模式。
链接:https://www.zhihu.com/question/19908744/answer/30946346
参考代码:
public static final class AutoOffsetReset extends Enum { public static AutoOffsetReset[] values() { return (AutoOffsetReset[]) $VALUES.clone(); } public static AutoOffsetReset valueOf(String name) { return (AutoOffsetReset) Enum.valueOf(com / sf / kafka / api / consume / ConsumeOptionalConfig$AutoOffsetReset, name); } public String getValue() { return value; } public static final AutoOffsetReset BEGIN; public static final AutoOffsetReset NOW; public static final AutoOffsetReset CUSTOM; private String value; private static final AutoOffsetReset $VALUES[]; static { BEGIN = new AutoOffsetReset("BEGIN", 0, "smallest"); NOW = new AutoOffsetReset("NOW", 1, "largest"); CUSTOM = new AutoOffsetReset("CUSTOM", 2, "custom"); $VALUES = (new AutoOffsetReset[] { BEGIN, NOW, CUSTOM }); } private AutoOffsetReset(String s, int i, String value) { super(s, i); this.value = value; } }
0 0
- Java中继承java.lang.Enum
- Inside java.lang.Enum
- java.lang.Enum
- java.lang.enum
- java.lang.Enum
- java.lang.Enum.valueOf()
- java中enum的实现enum<E extends java.lang.Enum<E>>
- java.lang.Enum枚举类型
- java.lang.Enum 枚举类型
- Java.lang.Enum.ordinal()方法
- java.lang.Enum定义理解
- java.lang.Enum枚举类型
- java.lang.Enum的方法
- Java 枚举类型(java.lang.Enum)
- Java中Enum使用
- Java中enum范例
- JAVA中enum使用方法
- java.lang.Enum类:枚举类型 小结
- Linux tcpdump命令详解
- STM32 keil工程配置设置
- struts中的结果集类型Result
- 函数参数与堆栈有关,与寄存器无关
- 安卓实现查看通话记录
- Java中继承java.lang.Enum
- Leetcode 104. Maximum Depth of Binary Tree
- Sql Server 数据库字典工具分享
- MD5 加密工具类
- 洛谷 P1017 进制转换
- 《算法概论》 习题8.8
- notepad++配置python环境
- linuxonandroid ubuntu12.04-v4-core启动文件(N7100 Android 4.3)
- 2016年工作总结:简单