您的位置:首页 > 职场人生

黑马程序员_Java中的枚举总结

2011-12-30 13:48 309 查看
----------------------
android培训、java培训、期待与您交流! ----------------------

一、什么是枚举?
枚举相当于一个类,可以定义成员变量,构造方法,抽象方法和普通方法。

JDK1.5中,Java语言定义了枚举类型的公共基本类Enum(抽象类)。

枚举知识点:

1.枚举中的每个成员变量都是该枚举的一个实例,即虽然只写了一个变量但隐含的在创建一个对象。

2.枚举的成员变量(元素)必须位于枚举体中的最开始部分。若把元素放在后面,编译器会报错。

3.当枚举元素列表后面 没有内容时,元素列表后面可以没有分号。有内容时,元素列表后面必须要有分号与其它成员分隔开。

二、为什么要有枚举?

枚举就是为了 让某一类型的变量的取值,只能是某几个固定值中的一个。否则,编译失败。就像Calendar日历类中的星期只能用那7个固定的值。

枚举可以让编译器在编译阶段就可控制源程序中填写的非法值,普通变量的方式在开发阶段(编译阶段)无法实现这一目标。

三、枚举的应用

自定义枚举类:用普通类实现枚举,就是将定义类的class换成enum。

1.带构造方法的枚举:元素的后面没有括号或者括号内容为空,则调用的是无参构造函数。

元素的后面的括号中有内容,则调用的是有参构造函数。

2.带抽象方法的枚举:就是用匿名类来实现的。方法是在元素的后面跟上一对大括号,大括号中是重写抽象方法和匿名类自己的内容。

3.最复杂的枚举:抽象、构造方法都有,就是将两者结合。

枚举只有一个元素时,就可以作为一种单例的实现方式。

public class EnumTest {

public static void main(String[] args) {

/*

WeekDay1 weekday=WeekDay1.SUN;

System.out.println(weekday.nextDay());

WeekDay weekday2=WeekDay.SUN;

System.out.println(weekday2.getClass());

System.out.println(weekday2.valueOf("SUN").toString());

*/

TrafficLamp traLamp=TrafficLamp.RED;

System.out.println(traLamp.getClass());

System.out.println(traLamp.nextColor().name());

}

//带有构造方法的枚举

public enum WeekDay{

SUN(2),MON(),TUE,WEN,THU,FRI,SAT;

private WeekDay(){}

private WeekDay(int i){

System.out.println(i);//输出2

}

}

//带有抽象方法的枚举

public enum TrafficLamp{

RED(30){//这是一个元素。这个元素是由TrafficLamp的一个子类来实现的。RED指向了这个元素。

public TrafficLamp nextColor(){

return GREEN;

}

},YELLOW(5){//此时调用的是有参构造函数

public TrafficLamp nextColor(){

return RED;

}

},GREEN(45){

public TrafficLamp nextColor(){

return YELLOW;

}

};

public abstract TrafficLamp nextColor();

private int time;

private TrafficLamp(int time){

this.time=time;

}

private TrafficLamp(){}

}

}

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

----------------------详细请查看:http://edu.csdn.net/heima?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: