枚举
定义枚举类要用关键字enum
所有枚举类都是Enum的子类
枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”);
枚举类也可以有抽象方法,但是枚举项必须重写该方法
枚举在switch语句中的使用
-
枚举的私有属性方法是不会被反射破坏掉的
public enum MyEnum { ENUM1{ //无参构造 @Override public void mothed() { //MyEnum的对象指向匿名内部类(多态),匿名内部类重写父类的抽象方法 System.out.println("ENUM1的mothed"); } },ENUM2{ @Override public void mothed() { } },ENUM3("啦啦啦"){ //有参构造 @Override public void mothed() { // TODO Auto-generated method stub } },ENUM4("嘿嘿嘿"){ @Override public void mothed() { } }; private String value; private MyEnum() {} private MyEnum(String str) { this.value = str; } public void show() { System.out.println("show():"+value); } public abstract void mothed(); 枚举中抽象方法情况 } //------------------------------ public class MyMain { public static void main(String[] args) { MyEnum me = MyEnum.ENUM1; switch (me) { case ENUM1: MyEnum.ENUM1.mothed(); System.out.println("1");break; case ENUM2: System.out.println("2");break; case ENUM3: System.out.println("3");break; case ENUM4: System.out.println("4");break; } } }
Enum类中的方法
int compareTo(E o) 比较此枚举与指定对象的顺序。
String name() 返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal() 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString() 返回枚举常量的名称(同普通类toString,可重写)
<T> T valueOf(Class<T> type,String name) 返回带指定名称的指定枚举类型的枚举常量。
values()
此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便