黑马程序员_java之枚举

android培训、物联云计算培训、 java培训、期待与您交流! ----------

枚举

枚举:让某个类型的变量的取值只能为若干个固定的值中的一个

普通类实现枚举:私有改造函数、每个元素用共有的静态成员变量表示

可以有若干个共有或抽象方法(将大量的if else语句转成一个个独立的类)

public abstract class WeekDay1 {   

    private WeekDay1(){}

    public final static WeekDay1 SUN=new WeekDay1(){

       public  WeekDay1 nextDay(){

           return MON;

       }

    };

    public final static WeekDay1 MON=new WeekDay1(){

       public  WeekDay1 nextDay(){

           return SUN;

       }

    };

    /*public WeekDay nextDay(){

       if(this ==SUN){

           return MON;

       }

       else{

           return SUN;

       }

    }*/

    //将大象的if else语句转成一个个独立的类

    public abstract WeekDay1 nextDay();

    public String toString(){

       return this==SUN?"SUN":"MON";

    }

}

带构造方法的枚举

public enum WeekDay{

     //元素列表定义在其他成分前面,用分号和其他成分分离,构造方法私有

       SUN(1),MON(),TUE,WED,THI,FRI,SAT;

       private WeekDay(){System.out.println("first");};

       private WeekDay(int Day){System.out.println("second");};

}

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

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

       System.out.println(WeekDay.values().length);

       System.out.println(WeekDay.valueOf("SUN"));

       System.out.println(WeekDay.values().length);

带方法的枚举

例:实现带有抽象方法的枚举,模拟交通灯

public enum TrafficLamp{

    RED(30){

       public TrafficLamp nextLamp(){

           return GREEN;

       }

    },

    GREEN(45){

        public TrafficLamp nextLamp(){

           return YELLOW;

       }

    },

    YELLOW(5){

       public TrafficLamp nextLamp(){

           return RED;

       }

    };

    public abstract TrafficLamp nextLamp();

    private int time;

    private TrafficLamp(int time){this.time=time;}

    }

总结: 枚举是一个特殊的类,其中可定义构造方法、成员变量、普通方法和抽象方法,每个元素都是该类的一个实例对象 ;

枚举只有一个成员时,也可以作为一种单例的实现方式。

转载于:https://www.cnblogs.com/niman/archive/2013/01/28/2880008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值