java笔记12-枚举
枚举可以看成一个特殊的类,但是只能实例化出特定值的对象。
1、枚举类型都隐式继承了java.lang.Enum类,因此不能继承其他类,但可以实现接口;
2、枚举类型只能有私有的构造方法(java运行时创建,外部不能进行实例化);
3、不能泛型化;
4、当有字段和方法时,枚举常量的列表必须以分号结尾;
5、编译器在创建枚举时会自动添加一些特殊方法。例如,它们具有一个静态values方法。
enum Day{ //枚举只能创建下面的对象,必须要写在第一行,使用方式:Day day =Day.monday; monday("星期一",1),tuesday,wednesday,thursday,friday,saturday,sunday;//因为有方法,这个地方要用分号结尾 private String name; private int index; //如果对象写成monday这种形式 则必须有带参数的构造方法 带参数的构造方法必须私有防止其他人实例化使用 private Day(){} private Day(String name,int index){ this.name=name; this.index=index; } }
public class TestEnum { public static void main(String[] args) { //创建对象 Day day =Day.monday; Day dd=day.valueOf("sunday"); //下标值的差 System.out.println(day.compareTo(dd)); //获取枚举值的名字和下标 System.out.println(dd.name()+"--"+dd.ordinal()); //获取对象的属性 System.out.println(day.getName()); System.out.println(day.getIndex()); //获取所有的枚举值 Day [] days=Day.values(); for(Day d:days) System.out.println(d.name()+"--"+d.ordinal()); } }