介绍
今天就跟大家聊聊有关深入浅析JDK中枚举类的原理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强>一概述强>
枚举类型是JDK 5之后引进的一种非常重要的引用类型,可以用来定义一系列枚举常量,使用枚举来表示枚举可以更好地保证程序的类型安全和可读性
实际上在使用关键字Enum创建枚举类型并编译后,编译器会为我们生成一个相关的类,这个类继承了Java API中的java.lang.Enum类,
也就是说通过关键字Enum创建枚举类型在编译后事实上也是一个类类型而且该类继承自. lang。Enum类
<强>使用举例强>
公共类EnumTest { enum MyCode {>公共抽象类Enum比; 实现Comparable 可序列化的{//枚举常量的名称 私人最终字符串名称;//返回此枚举常量的名称,与其枚举声明中声明的完全相同 公众最终字符串名称(){ 返回名称; }//此枚举常量的序数(它在枚举声明中的位置,其中初始常量的序数为零) 私人最终int顺序;//返回序号 公众最终int序数(){ 返回顺序; }//构造器 保护Enum(字符串名称,int序数){ this.name=名称; 这一点。序数=顺序; }//返回声明中包含的此枚举常量的名称 公共字符串toString () { 返回名称; }//果指定的对象等于此枚举常量,则返回现实。 公众最终布尔=(对象){ 返回这个==其他; } 公众最终int hashCode () { 返回super.hashCode (); }//无法被克隆 受保护的最终对象克隆()抛出CloneNotSupportedException { 把新CloneNotSupportedException (); }//将此枚举与指定的枚举序号进行比较 公众最终int compareTo (E o) { Enum<及# 63;比;其他=(Enum<和# 63;祝辞)o; Enum 自我=; 如果(self.getClass () !=other.getClass (),,//优化 self.getDeclaringClass () !=other.getDeclaringClass ()) 把新ClassCastException (); 回归自我。顺序——other.ordinal; }//返回与此枚举常量的枚举类型相对应的类对象 @SuppressWarnings (“unchecked") 公众最终Class getDeclaringClass () { Class<及# 63;比;clazz=getClass (); Class<及# 63;比;z上=clazz.getSuperclass (); 返回(z上==java.lang.Enum.class), # 63;(Class enumType, 字符串名称){ 结果T=enumType.enumConstantDirectory () . get(名称); 如果(结果!=null) 返回结果; 如果(name==null) 把新NullPointerException(“叫null"); 把新的IllegalArgumentException ( “没有枚举常数“;+ enumType.getCanonicalName () +“!”+名字); }//枚举类不能有确定方法 保护最终无效finalize () {}//防止反序列化 私人空间readObject (ObjectInputStream)抛出IOException, ClassNotFoundException { 把新的InvalidObjectException(“停下来# 39;t反序列化enum"); } 私人空间readObjectNoData()抛出ObjectStreamException { 把新的InvalidObjectException(“停下来# 39;t反序列化enum"); } }
看完上述内容,你们对深入浅析JDK中枚举类的原理有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。