黑马程序员---高新技术之枚举

来源:互联网 发布:西安医学院教务网络 编辑:程序博客网 时间:2024/05/16 04:53

--------- android培训java培训、期待与您交流! ----------

 

 

黑马程序员---高新技术之枚举

 

 

枚举:

要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。

 

1.所有枚举类都继承自java.lang.Enum类,所以,枚举类不可以再继承其他类,但是他可以实现其他接口

2.它不能有public的构造函数(构造函数要私有),这样做可以保证客户代码没有办法新建一个enum的实例。

3.所有枚举值都是public , static ,final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。

4.Enum默认实现了java.lang.Comparable接口。
5.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.
6.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
7.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
8.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定(枚举元素顺序从0开始)

 

需要注意的是

1.枚举只有一个成员时,就可以作为一种单例的实现方式。
2.
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。

 示例代码

public enum WeekDay{    SUN,MON,TUE,WED(1),THI,FRI,SAT;    //注意:     //1.构造方法.必须放在元素列表之后,     //2.如果元素列表后面有东西的话.元素列表后面一定要要分号;     //3.定义枚举的构造方法.一定要被私有修饰     //4.在枚举后面加上()大话号.就表示.创建这个元素指向实例对象的时候使用哪个构造方法.     private WeekDay(){     System.out.println("first");     }    private WeekDay(int day){     System.out.println("second");     }   }  


 

public enum WeekDay{ SUN,MON,TUE,WED(1),THI,FRI,SAT; //注意: //1.构造方法.必须放在元素列表之后, //2.如果元素列表后面有东西的话.元素列表后面一定要要分号; //3.定义枚举的构造方法.一定要被私有修饰 //4.在枚举后面加上()大话号.就表示.创建这个元素指向实例对象的时候使用哪个构造方法. private WeekDay(){ System.out.println("first"); } private WeekDay(int day){ System.out.println("second"); } }
0 0
原创粉丝点击