时间:2021-05-20
这篇文章主要介绍了Java枚举类接口实例原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
枚举类可以实现一个或多个接口。与普通类实现接口完全一样,枚举类实现接口时,需要实现该接口所包含的方法。
如果需要每个枚举值在调用同一个方法时呈现不同的行为,则可以让每个枚举值在{...}匿名块中实现自己的业务逻辑。
public interface IGradeHandler { String getGrade(String studentName);}为了方便测试,示例只定义了A和E两个等级,执行结果如下:
Lucy OutstandingTom Fail反编译枚举类
在《Java枚举抽象方法实例解析》中介绍了枚举类型的简单使用,现在有必要来了解一下它的基本实现原理。实际上在使用关键字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"; }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java实现接口的枚举类。分享给大家供大家参考,具体如下:一点睛枚举类也可以实现一个或多个接口。与普通类实现一个或多个接口完全一样,枚举类实现一个
本文实例讲述了C#接口实现方法。分享给大家供大家参考。具体如下:在讲解C#实现接口的实例解析之前我们来看看C#接口的定义,如果一个类派生于一个接口,它就会执行某
java中的interface接口实例详解接口:Java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法。java接口的特点如下:1、java接口不能
mybatis框架在操作数据的时候,离不开SqlSession接口实例类的作用。可以说SqlSession接口实例是开发过程中打交道最多的一个类。即是Defau
本示例声明一个接口IDimensions和一个类Box,显式实现了接口成员GetLength和GetWidth。通过接口实例dimensions访问这些成员。i