网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

怎样解析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://bjjierui.cn/article/pepejc.html

其他资讯