枚举类也可以实现一个或者多个接口。与普通实现一个或者多个接口完全一样,枚举类实现一个或者多个接口时,也需要实现该接口所包含的方法。下面程序定义了一个GenderDesc接口。

public interface GenderDesc

{

void info();

}

在上面的GenderDesc里面定义了一个info方法,下面的Gender枚举类实现了该接口,并实现了接口里包含的info方法。下面是Gender枚举类的代码。

public enum Gender implements GenderDesc

{

//此处的枚举值必须调用对应构造器来创建

MALE("男")

//花括号部分实际上是一个类体部分

{

public void info()

{

System.out.println("这个枚举值代表男性");

}

},

FEMALE("女")

{

public void info()

{

System.out.println("这个枚举值代表女性");

}

};

private final String name;

//枚举类的构造器只能使用private修饰

private Gender(String name)

{

this.name = name;

}

public String getName()

{

return this.name;

}

//增加下面的info方法,实现GenderDesc接口必须实现的方法

public void info()

{

System.out.println("这是一个用于用于定义性别Field的枚举类");

}

}

你可能会发现,枚举类实现接口不过如此,与普通实现接口完全一样,使用implements实现接口,实现接口里面包含的抽象方法。

如果由枚举类来实现接口里面的方法,则每个枚举值在调用该方法时都有相同的行为方式(因为方法体完全一样)。如果需要每个枚举值在调用该方法时呈现出不同的行为方式,则可以让每个枚举值分别来实现该方法,每个枚举值提供不同的实现方式,从而让不同的枚举值调用该方法时具有不同的行为方式。在下面的Gender枚举类中,不同的枚举值对info方法的实现各不相同(程序代码同上)。

上面的代码看起来有些奇怪:当我们创建MALE和FEMALE两个枚举值时,后面又跟了一对花括号,这对花括号里面包含了一个info()方法定义。就像匿名内部类的语法语义,花括号部分实际上就是一个类体部分,在这种情况下,当创建MALE,FEMALE枚举值时,并不是直接创建Gender枚举类的实例,而是相当于创建Gender的匿名子类的实例。

附:源代码示例

github地址:点击查看

码云地址:点击查看

打赏

微信扫一扫,打赏作者吧~欢迎关注人生设计师的微信公众账号

公众号ID:longjiazuoA

desc 枚举类型id_枚举系列(四):实现接口的枚举类相关推荐

  1. desc 枚举类型id_想让代码更优雅?Mybatis类型处理器了解一下!

    明确需求 在设计之初,sys_role表的enabled字段有2个可选值,其中0 代表禁用,1代表启用,而且实体类中我们使用的是Interger类型: 源码展示 /** * 有效标志 */ priva ...

  2. java 枚举类型enum用法_别再说Python没有枚举类型了,好好看看

    枚举 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. Python 的原生类型(Built-in types)里并没有专门的枚举类型,但是我们 ...

  3. android 枚举类型比较大小写,Spring 3.0 MVC绑定枚举区分大小写

    如果我有一个像这样的Spring控制器的RequestMapping ... @RequestMapping(method = RequestMethod.GET, value = "{pr ...

  4. java枚举类型有什么用_[转载] Java中枚举类型的使用 - enum

    本文转载自博客 - Java枚举类型, 博主对原文内容及结构作了一定的修改. 1 枚举类的编译特性 从JDK 5开始, Java中多了一个关键字 -- enum: 可以将一组具有名称的值(包括Stri ...

  5. SpringSecurity系列 之 AuthenticationEntryPoint接口及其实现类的用法

    1.AuthenticationEntryPoint接口 1.1.简介   被ExceptionTranslationFilter用来作为认证方案的入口,即当用户请求处理过程中遇见认证异常时,被异常处 ...

  6. Java枚举类型(enum)详解

    文章目录 理解枚举类型 枚举的定义 枚举实现原理 枚举的常见方法 Enum抽象类常见方法 编译器生成的Values方法与ValueOf方法 枚举与Class对象 枚举的进阶用法 向enum类添加方法与 ...

  7. c枚举类型enum例题_一篇文章让你详细了解Java中Enum枚举类的使用

    文章前记 程序员工作久了便可能整日忙碌于"增删改查"中,迷失方向,毫无进步. 该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路! 努力!做一个NB的Co ...

  8. java 枚举使用简书_java枚举类型使用和详解

    1.定义 An enum type is a special data type that enables for a variable to be a set of predefined const ...

  9. 理解Java枚举类型

    (参考资料:深入理解java enum) 1.原理:对编译后的class文件javap反编译可以看出,定义的枚举类继承自java.lang.Enum抽象类且通过public static final定 ...

最新文章

  1. 结构光测距相位差_ROHM确立新型VCSEL模块技术 有助于提高测距精度
  2. 企业环境下如何把ubuntu的dhcp改为静态IP
  3. SqlCommand类,在与数据库交互式一定要用到的属性
  4. # Schedulerx正式登陆Ali-k8s应用目录
  5. C# 3.0入门系列(三)
  6. vscode 使用flask
  7. 一种基于Spring的java程序常量管理思路
  8. 怎么用vc采集ni卡数据_「解决方案」三维激光扫描多数据混合作业,助力“地籍调查”...
  9. 代码中目录是否以分隔符结尾的再讨论
  10. x5内核有什么优点_腾讯X5内核引擎
  11. c语言图书管理系统报告书,c语言图书管理系统实验报告_c语言程序设计报告 图书管理平台_c语言 图书管理平台...
  12. 傅里叶变换、拉普拉斯、Z变换、离散傅里叶变换的关系
  13. 双二阶广义积分器(SOGI)软件锁相(基于双线性变换)推导及实验代码
  14. 幼儿园计算机信息技术培训总结,幼儿园教师信息技术培训总结
  15. 神奇魔方html5游戏在线玩,神奇的魔方
  16. tpshop报 商业用途必须购买正版,使用盗版将追究法律责任
  17. 三个人的友谊显的有些拥挤了...
  18. 《炬丰科技-半导体工艺》用湿法臭氧去除各种化学结构的聚合物
  19. C语言与java中函数传参比较
  20. OpenStack 裸金属

热门文章

  1. python socket学习
  2. 【数据库(二)】嵌套子查询
  3. 尤雨溪回应:Vue与TypeScript为什么相性特别差?
  4. Java笔记:成员变量,局部变量,类变量,实例变量以及注意事项
  5. 利用正则表达式去除所有html标签,只保留文字
  6. ueditor初始化
  7. Ambari Metrics Monitor/Sink 架构
  8. 网络层IP路由的负载均衡实现思路
  9. python 单一进程实例 实现
  10. python3 获取异常类型