枚举
实例有限而固定的类成为枚举类,例如:季节类,它只有四个对象;行星类,它只有九个对象。
枚举类与普通类的区别:
1、使用enum定义的枚举类默认继承了java.lang.Enum类,而不是Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。
2、枚举类的构造器只能用private修饰,如果省略则系统默认使用private。
3、枚举类的所有实例必须在枚举类中显式列出,而且系统会自动添加public static final修饰。
4、所有枚举类都提供了一个values方法。该方法可以很方便地遍历所有枚举值。
public class Season {
public void judge(SeasonEnum s){
switch (s) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case FALL:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
default:
break;
}
}
public static void main(String[] args) {
// 所有枚举类都有一个values()方法,返回该枚举类的所有实例
for (SeasonEnum s : SeasonEnum.values()) {
System.out.println(s);
}
//平常使用枚举类时,通过EnumClass.variable形式类访问
new Season().judge(SeasonEnum.SPRING);
}
}
enum SeasonEnum{
SPRING,SUMMER,FALL,WINTER;
}
枚举类可以直接使用java.lang.Enum类中所包含的方法:
1、int comparaTo(E o):用于与指定的枚举对象比较顺序,同一个枚举实例只能与相同类型的枚举类实例进行比较,如果该枚举对象位于指定对象之后则返回正整数,否则返回负整数。
2、string name():返回此枚举实例的名称
3、int ordinal():返回枚举值在枚举类中的索引值,跟数组的下标同一概念。
4、string toString():返回枚举常量的名称,大致上与name方法相似,但toString()更常用。
5、public static<T extends Enum<T>> T valueOf(Class<T>enumType,String name):这是一个静态方法,用于返回指定枚举类中指定名称的枚举值。