相信大家在接触其他语言时已经知道了枚举类这一概念,下面是一个典型的例子:
public enum Size{SMALL,MEDIUM,LARGE,EXTAR_LARGE};
实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要构造新对象。
因此,在比较两个枚举类型的值时,永远不要调用equals,而直接使用“==”即可。
如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用。下面是一个实例:
public enum Size{
SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abbreviation) {this.abbreviation=abbreviation;}
public String getAbbreviation() {return abbreviation;}
}
所有的枚举类都是Enum的子类,他们继承了这个类的许多方法。列如:toString、values、valueof、ordinal等。
下面用程序演示下枚举类型的工作方式:
public class Solution{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.print("Enter a size: (SMALL,MEDIUM,LARGE,EXTRA_LARGE)");
String input=in.next().toUpperCase();
Size size=Enum.valueOf(Size.class, input);
System.out.println("size="+size);
System.out.println("abbreviation="+size.getAbbreviation());
if(size==Size.EXTRA_LARGE)
System.out.println("Good job--you paid attention to the _.");
}
enum Size{
SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");
String abbreviation;
private Size(String abbreviation) {this.abbreviation=abbreviation;}
public String getAbbreviation() {return abbreviation;}
}
}
常用方法说明:
//返回指定名字、给定类的枚举常量
static Enum valueOf(Class enumClass,String name)
//返回枚举常量名
String toString()
//返回枚举常量在enum声明中的位置,位置从0开始计数
int ordinal()
//如果枚举常量出现在other之前,则返回一个负值;如果this==other,
//则返回0;否则,返回正值。枚举常量的出现次序在enum声明中给出。
int compareTo(E other)