java Enum类型的介绍
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