怎样解析Java枚举类接口实例原理

本篇文章为大家展示了怎样解析Java枚举类接口实例原理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联是一家专注于成都网站制作、做网站与策划设计,忻州网站建设哪家好?创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:忻州等地区。忻州做网站价格咨询:028-86922220

枚举类可以实现一个或多个接口。与普通类实现接口完全一样,枚举类实现接口时,需要实现该接口所包含的方法。

如果需要每个枚举值在调用同一个方法时呈现不同的行为,则可以让每个枚举值在{...}匿名块中实现自己的业务逻辑。

public interface IGradeHandler {  String getGrade(String studentName);}

public enum GradeHandlerEnum implements IGradeHandler {  //five grade levels A B C D E  A("90~100") {    @Override    public String getGrade(String studentName) {      return studentName + " Outstanding";    }  },  E("0~59") {    @Override    public String getGrade(String studentName) {      return studentName + " Fail";    }  };  private String score;  GradeHandlerEnum(String score) {    this.score = score;  }  public String getScore() {    return this.score;  }  public static void main(String[] args) {    GradeHandlerEnum a = GradeHandlerEnum.A;    GradeHandlerEnum e = GradeHandlerEnum.valueOf("E");    System.out.println( a.getGrade("Lucy"));    System.out.println( e.getGrade("Tom"));  }}

为了方便测试,示例只定义了A和E两个等级,执行结果如下:

Lucy OutstandingTom Fail

反编译枚举类

现在有必要来了解一下它的基本实现原理。实际上在使用关键字enum创建枚举类并编译后,编译器会生成一些相关的类,这些类继承了Java API中的java.lang.Enum类,也就是说通过关键字enum创建的枚举类在编译后事实上也是一个类类型而且该类继承自java.lang.Enum类。

IGradeHandler.classGradeHandlerEnum.classGradeHandlerEnum$1.classGradeHandlerEnum$2.class

使用javac编译GradeHandlerEnum.java文件后,生成四个class文件,其中,GradeHandlerEnum.class是枚举类型,这也就验证前面所说的使用关键字enum定义枚举类并编译后,编译器会自动帮助我们生成一个与枚举相关的类。使用jd-gui反编译后的主要class文件如下:

import java.io.PrintStream;public enum GradeHandlerEnum implements IGradeHandler {// 编译后生成两个class文件GradeHandlerEnum$1和GradeHandlerEnum$2 A("90~100"), E("0~59");  private String score; //私有构造函数 private GradeHandlerEnum(String paramString) {  this.score = paramString; }  public String getScore() {  return this.score; }  public static void main(String[] paramArrayOfString) {//实例化枚举实例,变量名由系统生成  GradeHandlerEnum localGradeHandlerEnum1 = A;  GradeHandlerEnum localGradeHandlerEnum2 = valueOf("E");  System.out.println(localGradeHandlerEnum1.getGrade("Lucy"));  System.out.println(localGradeHandlerEnum2.getGrade("Tom")); }}//枚举值A对应的枚举类enum GradeHandlerEnum$1{ GradeHandlerEnum$1(String paramString1) {  super(paramString, paramInt, paramString1, null); }  public String getGrade(String paramString) {  return paramString + " Outstanding"; }}//枚举值B对应的枚举类enum GradeHandlerEnum$2{ GradeHandlerEnum$2(String paramString1) {  super(paramString, paramInt, paramString1, null); }  public String getGrade(String paramString) {  return paramString + " Fail"; }}

上述内容就是怎样解析Java枚举类接口实例原理,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


文章标题:怎样解析Java枚举类接口实例原理
文章来源:http://myzitong.com/article/pepejc.html