enum枚举
- 枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是默认继承Object类,因此枚举类不能显示继承其他父类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。
- 使用enum定义、非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类。
- 枚举类的构造器只能使用private访问控制符,如果省略了构造器的访问控制符,则默认使用private修饰;如果强制指定访问控制符,则只能指定private修饰符。
- 枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远都不能产生实例。列出这些实例时,系统会自动添加public static final 修饰,无须程序员显式添加。
- 枚举类默认提供了一个values()方法,该方法可以很方便地遍历所有的枚举值
enum Week {
MONDAY("jis"),TUESDAY("2"),WEDNESDAY("3"),THURSDAY("4"),FRIDAY("5"),SATURDAY("6"),SUNDAY("6");
String i = "Tom";
private Week(String a) {
i = a;
}
public void test() {
System.out.println( this.name()+"里面的test方法");
}
}
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
System.out.println(Week.MONDAY.i);
System.out.println(Week.SATURDAY.equals(Week.FRIDAY));
System.out.println(Week.WEDNESDAY.ordinal());
System.out.println(Week.WEDNESDAY.name());
Week[] week = Week.values();
System.out.println(Arrays.toString(week));
choose(Week.MONDAY);
}
public static void choose(Week w) {
switch(w) {
case MONDAY:
System.out.println("星期一");
break;
case TUESDAY:
System.out.println("星期二");
break;
case WEDNESDAY:
System.out.println("星期三");
break;
case THURSDAY:
System.out.println("星期四");
break;
case FRIDAY:
System.out.println("星期五");
break;
case SATURDAY:
System.out.println("星期六");
break;
case SUNDAY:
System.out.println("星期天");
break;
}
}
}