首页 > 编程语言 >Java 枚举(enum) 详解7种常见的用法

Java 枚举(enum) 详解7种常见的用法

时间:2022-12-07 11:04:29浏览次数:49  
标签:index Java name enum 枚举 public String


Java 枚举(enum) 详解7种常见的用法

常量

  • 在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
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实例序列的最后添加一个分号。而且 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
}
}

关于枚举集合的使用

  • java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

标签:index,Java,name,enum,枚举,public,String
From: https://blog.51cto.com/u_15903793/5918265

相关文章

  • Java8的Stream流如此强大,你知道它的原理吗
    ......
  • javaScript_01_按照key排序
     javaScript_01_按照key排序前言Object.keys()与Objetc.values()实现按key排序前言最近做一个小程序项目需要用到腾讯地图的api,在计算sig的时候需要将参数按照......
  • java基础之数据类型转换
    一简介1.Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。由低到高:byte,short,char——int——long——float——double二转换类型1.强制转换由高到低......
  • Java基础7-(练习题,Debug)
    Java基础7-(练习题,Debug)习题:数组遍历需求:设计一个方法用于数组遍历,要求遍历结果在一行上,例如[11,22,33,44,55]数组求值需求:设计方法,输出数组的最大,最小,总和......
  • javascript - 判定输入浮点数是否合法
    方法借鉴其他作者,我进行了错误汇总并完善,记录以备后用;首先建立一个功能函数,用于检查输入浮点数是否合法:functionCheckValueError(theFloat){}//返回True表示错误,返回F......
  • JavaScript入门⑦-DOM操作大全
    JavaScript入门系列目录JavaScript入门①-基础知识筑基JavaScript入门②-函数(1)基础{浅出}JavaScript入门③-函数(2)原理{深入}执行上下文JavaScript入门④-万物皆......
  • JavaScript中的中间排序算法
    英文|https://medium.com/@gianfranconuschese/intermediate-sorting-algorithms-in-javascript-4ec8b641b32翻译|web前端开发(ID:web_qdkf)最近,我介绍了一些使用JavaScri......
  • java项目 引入mybatis-plus
    1、引入maven<!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version>......
  • Java数组转Set的方法
    转:Java数组转Set的方法        ......
  • 【collection】3.java容器之ArrayList
    ArrayListArrayList底层是数组add新增元素的时候其实就是在数组下一个位置进行元素赋值,重点是在扩容上扩容privatevoidgrow(intminCapacity){ //overflow-cons......