枚举(enum) 详解7种常见的用法
用法一:常量
在JDK1.5 之前,我们定义常量都是: public static final.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
Java代码
public enum Color {
RED, GREEN, BLANK, YELLOW
}
用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
Java代码
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。
https://blog.csdn.net/qq_27093465/article/details/52180865
而且 Java 要求必须先定义 enum 实例。
Java代码
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。
Java代码
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//覆盖方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
Java代码
public interface Behaviour {
void print();
String getInfo();
}
public enum Color implements Behaviour{
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//接口方法
@Override
public String getInfo() {
return this.name;
}
//接口方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}
用法六:使用接口组织枚举
Java代码
public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}
/**
* 测试继承接口的枚举的使用(by 大师兄 or 大湿胸。)
*/
private static void testImplementsInterface() {
for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {
System.out.print(dessertEnum + " ");
}
System.out.println();
//我这地方这么写,是因为我在自己测试的时候,把这个coffee单独到一个文件去实现那个food接口,而不是在那个接口的内部。
for (CoffeeEnum coffee : CoffeeEnum.values()) {
System.out.print(coffee + " ");
}
System.out.println();
//搞个实现接口,来组织枚举,简单讲,就是分类吧。如果大量使用枚举的话,这么干,在写代码的时候,就很方便调用啦。
//还有就是个“多态”的功能吧,
Food food = Food.DessertEnum.CAKE;
System.out.println(food);
food = CoffeeEnum.BLACK_COFFEE;
System.out.println(food);
}
运行结果
用法七:关于枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。
枚举(enum) 详解7种常见的用法相关推荐
- Java 枚举(enum) 详解7种常见的用法<详细>
JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 大师兄我[大师兄]又加上自己的理解,来帮助各位理解一下 ...
- Java 枚举(enum) 详解7种常见的用法
JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 大师兄我[大师兄]又加上自己的理解,来帮助各位理解一下 ...
- Java 枚举(enum) 详解7种常见的用法-小白笔记
目录 用法一:常量 用法二:switch 用法三:向枚举中添加新方法 用法四:覆盖枚举的方法 用法五:实现接口 用法六:使用接口组织枚举 用法七:关于枚举集合的使用 用法一:常量 在JDK1.5 之前 ...
- Java 枚举(1): 详解7种常见的用法
目录 用法一:常量 用法二:switch 用法三:向枚举中添加新方法 用法四:覆盖枚举的方法 用法五:实现接口 用法六:使用接口组织枚举 用法七:关于枚举集合的使用 JDK1.5引入了新的类型--枚举 ...
- Java (枚举) Enum 详解
枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数.枚举在日常生活中很常见,例如表示星期的SUNDAY.MONDAY.TUESDAY.WEDNESDAY.THURSDAY.FRIDAY.SA ...
- 详解几种常见的RAID
目录 •写在前面 •RAID是什么 •RAID的优点 •RAID-0 优势 缺点 •RAID-1 优点 缺点 •RAID1+0以及RAID0+1 优点 •RAID-5 •RAID-6 优点 缺点 •预 ...
- Java 枚举(enum) 7种常见的用法
在JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 用法一:常量 在JDK1.5 之前,我们定义常量都是 ...
- (17)System Verilog枚举类型enum详解
(17)System Verilog枚举类型enum详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog枚举类型enum详解 5)结语 ...
- java枚举使用详解
http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951632.html java枚举使用详解 在实际编程中,往往存在着这样的"数据集& ...
最新文章
- 如何用Splunk建立可疑DNS报警系统
- Java内存溢出(OOM)异常完全指南
- 深入理解内存(3):内存交换技术,虚拟内存
- 2014中国企业面对的五大挑战
- java JLabel改变大小后如何刷新_到底一行java代码是如何在计算机上执行的
- Spring 框架简介及官方压缩包目录
- Web漏洞扫描工具:AWVS下载
- OCR身份证信息批量识别导出excel
- 王者荣耀android换ios,王者荣耀安卓转ios教程攻略
- 俄亥俄州立大学计算机专业排名,俄亥俄州立大学哥伦布分校计算机科学专业排名第30(2020年USNEWS美国排名)...
- Android网络框架-Volley实践 使用Volley打造自定义ListView
- macOS 开发 - 打包 PKG(使用 Packages)
- [论文笔记|LIC-Fusion]LIC-Fusion: LiDAR-Inertial-Camera Odometry
- 【dgl框架】dgl.metapath_reachable_graph函数解析
- js 数据验证(psv)
- css和html是什么关系,css是什么,CSS和HTML有什么关系
- 天气预报在计算机的应用中是,计算机在天气预报中的应用.ppt
- Mysql 中文名称(包括字母)按首字母排序
- linux+gpfs配置文件,GPFS配置手册
- 2018普渡大学计算机科学本科,2018-2021QS美国普渡大学世界排名变化(附热门学科排名)...
热门文章
- Unity入门案例(约翰的密室逃脱)
- 2021年春招首发!阿里云云原生实习一二三面面经,看完的都进阿里了!
- amlogic小米_小米全面屏电视Pro搭载与Amlogic联合研发的12nm制程芯片
- html2canvas 图片合成模糊以及保存为图片背景图丢失问题解决
- 3.有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。问第4个学生岁数,他说比第3个学生大2岁。以此类推,最后问第1个学生,他说是10岁。请问第5个学生多大。
- Android软件权限知识普及
- Katalon Studio简介
- 树莓派隐藏任务栏一种方法
- zigbee期末考试选择题含答案
- 1.极限——ε-δ定义_6