深入浅析JDK中枚举类的原理

  介绍

今天就跟大家聊聊有关深入浅析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")
  公众最终ClassgetDeclaringClass () {
  Class<及# 63;比;clazz=getClass ();
  Class<及# 63;比;z上=clazz.getSuperclass ();
  返回(z上==java.lang.Enum.class), # 63;(ClassenumType,
  字符串名称){
  结果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中枚举类的原理有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

深入浅析JDK中枚举类的原理