1.枚举的语法特点
-
枚举是jdk1.5提供的一个特性
-
枚举是一个特殊的类,这个类的对象的数量是有限的。在定义枚举类的同时就已经确定了类对象及类对象的数量。
-
枚举使用
enum
关键字定义
class A{}
enum A{}
在枚举类中的第一行,就需要提供枚举类的对象(名字)
多个对象名之间使用逗号隔开。
最后一个对象可以使用分号,也可以不用。强烈建议使用分号结束
每一个对象都相当于public static final A a ; (编码规范:常量的名字都大写)
enum A{//public static final A a1 = new A();a1 , a2 , a3 , a4 ;
}
-
枚举类中也可以有属性,方法和构造方法,其中属性和方法与普通类没有任何区别。
-
构造方法可以是无参,也可以是有参。但必须是private
-
在声明枚举对象时,可以指定调用的构造方法及为构造方法传递的参数。
enum B{B1, //new B()B2(), //new B()B3(10,20), //new B(10,20);B4(100,200), //new B(100,200);B5 ;private B(){}private B(int i , int j){this.i = i ;this.j = j ;}int i ;int j ;
}
-
枚举不能继承
-
枚举中可以定义抽象方法
enum C{c1(){public void t1(){System.out.println("----------------------------");}} ,c2(){public void t1(){System.out.println("=============================");}} ;public abstract void t1() ;
}
2.枚举的使用
获得枚举对象
-
B b = B.B1;
-
枚举对象可以作为switch的判断条件
public void test(B b){switch(b){case B1:break ;case B2:break ;case B3:break ;case B4:break ;}
}
使用枚举对象
-
就是调用枚举对象的属性和方法。 包括两部分
-
定义枚举时,我们根据需求自定义的属性和方法
-
所有的枚举类都默认继承Enum父类。 类似于所有的注解都继承Annotation。 所以枚举 对象中还包含一些Enum父类中提供的方法
-
e.getName();//获得枚举对象的名字,也就是变量名
e.ordinal();//获得当前枚举对象在所有枚举对象列表中的位置(下标 0开始)
e.compareTo(Enum e1); //默认比较两个枚举对象的索引位置
Enum.valueOf(B.class,"B2"); //获得指定名字的枚举对象
B.values(); //获得B这个枚举类的所有枚举对象,以数组的形式返回