举个例子:
package enumTest;
public enum Season {
SPRING(1,"春天"),
SUMMER(2,"夏天"),
AUTUMN(3,"秋天"),
WINTER(4,"冬天");
private int value;
private String description;
Season(int value,String description){
this.value=value;
this.description=description;
}
public static Season getByValue(int value){
for(Season season:Season.values()){
if(season.getValue()==value){
return season;
}
}
throw new IllegalArgumentException("no matches "+value);
}
public int getValue() {
return value;
}
public String getDescription() {
return description;
}
public static void main(String[] args){
/**
* static Enum valueof(Class enumClass,String name)
* 返回指定名字、给定类的枚举常量
*/
Season summer = Enum.valueOf(Season.class, "SUMMER");
System.out.println("summer: "+summer);
System.out.println("--------------");
/**
* String toString()
* 返回枚举常量名
*/
System.out.println("summer.toString(): "+summer.toString());
System.out.println("--------------");
/**
* int ordinal()
* 返回枚举常量在enum中声明的位置,位置从0开始计数
*/
System.out.println("summer.ordinal(): "+summer.ordinal());
System.out.println("--------------");
/**
* 静态values方法 返回一个包含全部枚举值的数组
*/
Season[] values = Season.values();
for(Season season:values){
System.out.println("season: "+season);
}
System.out.println("--------------");
/**
* int compareTo(E other)
* 枚举常量出现在other之前,返回负值
* ==other ,返回0
* 在other之后,返回正值
*/
int i = Season.SPRING.compareTo(summer);
System.out.println("i= "+i);
int j = Season.SUMMER.compareTo(summer);
System.out.println("j= "+j);
int k = Season.AUTUMN.compareTo(summer);
System.out.println("k= "+k);
System.out.println("--------------");
Season byValue = Season.getByValue(1);
System.out.println("1: "+byValue);
Season byValue1 = Season.getByValue(5);
System.out.println("5: "+byValue1);
}
}
输出:
https://www.ibm.com/developerworks/cn/java/j-lo-enum/