------- android培训、java培训、期待与您交流! ----------
一、enum枚举:它是Type 是 Java 编程语言中所有类型的一种,他的实例对象表示的是一些具有一定取值范围的一类数据,通过枚举的实现,在编译时期杜绝那些在范围外的数据的输入,提高代码的安全性。例如:表示时间的年、月、日、星期等。下面通过定义一个WeekDay星期类,来说明枚举的一些相关的知识:
1)枚举列表中的成员都是常量值,用大写表示。
1) 枚举当中参数列表是枚举类中的实例对象,如果枚举类中只有参数列表时,最后的双引号可以省略;而如果,枚举类中除了参数列表外,还有其他成员,则其后的双引号必须写上,且,其它成员必须位于此参数列表之后。
2) 枚举列表中的成员都是有序性的,它的成员方法int ordinal()方法返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
3) 枚举中的构造函数必须是私有的。
二、带有多个构造的枚举:构造函数是用来实例化对象的,带有多个构造函数的枚举怎么实现其构造函数的调用呢?
public enumWeekDayTest {
MON(0),TUE(1),WEN,THR,FRI,SAU,SUN;
private WeekDayTest() {
System.out.println("无参构造方法");
}
private WeekDayTest(int day) {
// TODO自动生成的方法存根
System.out.println("有参构造方法");
输出结果:
有参构造方法
有参构造方法
无参构造方法
无参构造方法
无参构造方法
结果分析:由于类加载时会加载类的静态属性值(MON(0),TUE(1),WEN,THR,FRI,SAU,SUN),默认情况下(即静态值后面的小括号中没有参数),会调用无参构造方法,若静态值后面的小括号中有参数,如上面代码中的MON(0),TUE(1),会调用有参构造方法。
三、带有抽象方法 的枚举:public enum TrafficLamp {
RED(30){
public TrafficLamp nextLamp()
{
return GREEN;
}
},
GREEN(20){
public TrafficLamp nextLamp()
{
return YELLOW;
}
},
YELLOW(40){
public TrafficLamp nextLamp()
{
return RED;
}
};
public abstract TrafficLampnextLamp();
private int time;
private TrafficLamp (int time)
{
this.time=time;
}
}
注意:此枚举类中虽有抽象方法,但是不可以将enum用abstract修饰,这是与其他类不同的地方,其抽象方法实现方式与普通类一样的,不能用new的方式直接创建对象,但可以用花括号 的方式完成对父类的实现。