枚举类,jdk5.0新增特性。如果对象是有限个,确定的(即对象具有不可变性),应该用枚举类来实现。对于自定义枚举类,要私有化属性,设为常量(防止内部修改,外部直接获取),私有化构造器,造有限个公有静态常量对象,如果有其他诉求,比如get方法,toString方法实现即可。
枚举类是通过enum关键字来实现的,继承于java.lang.Enum,所以被重写了toString方法,返回对象名。其次,因为这个关键字简化了自定义枚举类,所以有特殊要求,开头必须是对象名,不能带修饰符,括号内部实参变量,如果构造器没有形参,括号可以省略,逗号分割,分号结束,switch中只能使用对象名。其余与自定义枚举类没区别,但是继承了一些好用的方法。
static values,返回枚举类对象数组;static valueOf(String) illegalArgumentException 返回枚举对象;toString() 返回枚举名。
任务:查看源码,了解三者实现机制。
枚举类实现接口的话内部实现抽象方法,如果每个对象都是实现了抽象方法的匿名子类对象则可以省略枚举类内部实现的抽象方法。



