"景先生毕设|www.jxszl.com

java Enum类型的介绍

2023-09-12 15:40编辑: www.jxszl.com景先生毕设

java Enum类型的介绍

定义:枚举(enum全称为enumeration)类型是Java 5新增的类型,存放在java.lang包中,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。

常量定义
举个例子来说明一下,如果希望定义出七种编程语言,你可以在 Java 程序中通过常量定义方式来实现。
Public static class RainbowColor { 
   //给出7种编程语言的常量定义
   public static final int JAVA = 0;
   public static final int python= 1;
   public static final int  C# = 2;
   public static final int oracle = 3;
   public static final int iOS   = 4;
   public static final int MySql  = 5;
   public static final int Android = 6;
}

枚举类中的常用方法:
I.int compareTo(E o): 该方法用于与制定枚举对象比较顺序,同一个枚举实例只能与相同类型的枚举实例比较。如果该枚举对象位于指定枚举对象之后,则返回正整数;
反之返回负整数;否则返回零;
II.String name(): 返回此枚举实例的名称,即枚举值 ;
III.static values(): 返回一个包含全部枚举值的数组,可以用来遍历所有枚举值;
IV.String toString(): 返回枚举值的名称,与 name 方法类似,更常用;
V.int ordinal(): 返回枚举值在枚举类中的索引值(从0开始),即枚举值在枚举声明中的顺序,这个顺序根据枚举值声明的顺序而定;
VI.static valueOf(): 返回带指定名称的指定枚举类型的枚举常量,名称必须与在此类型中声明枚举常量所用的标识符完全匹配(不允许使用额外的空白字符)。
    这个方法与toString相对应,因此重写 toString() 方法,一定要重写 valueOf() 方法(我们可以重写 toString() 方法,但不能自己重写 valueOf() 方法,当我们重写 toString() 方法时,valueOf() 方法会自动重写,不用我们理会。);
VII.boolean equals()方法: 比较两个枚举类对象的引用。

枚举类的其他用法
I.switch语句中使用
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;
        }
    }
}

II.遍历

Java 中使用values()方法将枚举所有元素item转换成一个数组。这样就可以通过foreach语法来遍历枚举中的所有元素了。

for (ColorEnum color: ColorEnum.values()) { 
    log.info("ordinal:{}, name:{}", color.ordinal(), color.name());
}

输出结果:
ordinal:0, name:RED 
ordinal:1, name:GREEN 
ordinal:2, name:BLUE 

III.实现接口
所有的枚举都继承自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);
    }
}

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);
    }
}

IV使用接口组织枚举
public interface Food {
    enum Coffee implements Food {
        BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO
    }
    enum Dessert implements Food {
        FRUIT, CAKE, GELATO
    }
}
http://www.itemperor.com/a/JAVA/263.html
原文链接:http://www.jxszl.com/biancheng/JAVA/446615.html