JAVA加强——枚举

来源:互联网 发布:sql start with 树状 编辑:程序博客网 时间:2024/06/06 12:52

枚举


枚举就是要让某个类的变量取值只能是其规定好的其中一个。否则编译不过去。枚举可以让编译器在编译的时候就控制程序中的非法值。普通类变量无法实现这个效果。

枚举一开始是在C里面才有的,JAVA中没有,后来java用的人多了,JAVA设计者又把枚举加入进来。


枚举类设置方法

1、私有构造方法

2、每个元素分别要用共有的静态成员变量表示。例如:public  static  final

3、可以有若干公有方法或抽象方法。


举例:

定义一周当中,星期日用一个数字表示,那么有可能是几呢?为了统一规范。我们可以用枚举方法把这个定义约束,让调用者只能按照规范操作。

public class WeekDay
{
private WeekDay(){};

public final static WeekDay SUN= new WeekDay();  //定义了星期日的对象
public final static WeekDay MON= new WeekDay(); //定义了星期一的对像

// 注意:每个枚举对象都是一个对象。

}

那么,在新调用的weekday对象的时候,就只能写成

WeekDay weekday = WeekDay.SUN;

如果想给weekday对象设置其他的值,则不行,例如:

WeekDay weekday = 7; //这样写就会报错。因为已经在上面把构造方法定义成私有,并且制定了具体的对象值。


定义toString 方法,来告诉调用者都有什么类

public  String toString()

{

return this==SUN?"SUN":"MON"  //如果调用SUN变量,则返回MON变量

}


当然,以上是用普通类模拟枚举的实现原理,为了是让大家搞明白枚举类的原理。

实际我们自己使用的时候很简单。不用上面那么麻烦。

直接使用enum修饰这个类

public enum WeekDay

{

SUN,MON,TUE,WED,THI,FRI,SAT  //这里每一个都是对象,创建时候都调用构造方法

private WeekDay(){ };//构造方法1

private WeekDay(int a){ };//构造方法2

}

使用enum定义的枚举类注意事项

1、类中的元素列表必须放在第一行。

2、枚举的构造方法必须是私有的。

3、在枚举类中第一行,每一个定义的元素,都是一个常量,因为常量在类初始化的时候就自动会先实例化常量,优先于其他对象的构造。

引用或创建时,都调用这个枚举类的构造方法。

如果在后面加上括号,并且传入值,就会调用不同的构造方法,跟普通类一样。

例如:

public enum WeekDay

{

SUN(1),MON,TUE,WED,THI,FRI,SAT  //这里的sun(1)就会调用下面的 构造方法2

private WeekDay(){ };//构造方法1

private WeekDay(int a){ };//构造方法2

}


同时,枚举类里面的元素可以创建自己的内部类方法,来调用父类的方法。

例如:

public enum WeekDay

{

SUN(){

publicWeekDay XXXX()//调用了下面的抽象方法

{ return null};

}

,MON()

{

publicWeekDay XXXX()

{ return null};

}

private WeekDay(){ };//构造方法1

public abstract WeekDay XXXX(){};

}


原创粉丝点击