上一段时间工作的时候用到了枚举,下面根据例子总结一下。
package com.yiliaosoft.health.heartElect.front.webservice.impl.delegate;
public class TestEunm {
public static void main(String[] args) {
System.out.println(Colour.RED.name());//枚举的名字
System.out.println(Colour.RED.ordinal());//枚举的排序
System.out.println(Colour.valueOf("YELLOW"));//接收一个字符串返回一个枚举
System.out.println(Colour.getColourMessage(Colour.RED));//枚举的静态方法
System.out.println(Colour.RED.getMessage());//元素内部的实现方法
}
}
/**
* 枚举里面的每个元素都是一个特殊的类
* 每个元素都有自己的构造方法,元素的构造方法限制于枚举类本身所提供的构造方法
* 枚举元素就对于枚举而言就是个内部类
* @author Administrator
*
*/
enum Colour{
RED(1) {//调用有参的构造方法
@Override
public String getMessage() {
return "红灯停";
}
},GREEN {//调用无参的构造方法
@Override
public String getMessage() {
return "绿灯行";
}
},YELLOW {
@Override
public String getMessage() {
return "黄灯亮了等一等";
}
};
private int i;
private Colour(){
System.out.println("枚举无参构造方法启动!");
};
private Colour(int i){
System.out.println("枚举有参构造方法启动!");
this.i=i;
System.out.println("###########"+i);
}
//传入枚举获取枚举的信息
public static String getColourMessage(Colour colour){
String str="";
switch (colour) {
case RED:
str="红灯";
break;
case GREEN:
str="绿灯";
break;
case YELLOW:
str="黄灯";
break;
default:
str="未知灯";
break;
}
return str;
}
//抽象方法,枚举元素内部去实现
public abstract String getMessage();
}
可以根据每个枚举元素来进行不同的操作,用枚举还可以实现一个单例。