泛型与枚举

    技术2022-05-20  49

    package javase.gaoxin.jishu; /*模拟JAVA中枚举类型的实现方式  * 从以下的实验可以总结出:  * 1)枚举类中的成员(除了枚举常量以外)都必须是private的;  * 2)当枚举类只有一个‘枚举常量’时可以作为‘单例’  */ public class WeekDay1 {     public WeekDay1() {}             //★★从以下枚举类的‘枚举常量’的‘定义’可以看出,每一个‘枚举常量’都是所在枚举类的一个‘实例对象’     public final static WeekDay1 SUN = new WeekDay1();     public final static WeekDay1 MON = new WeekDay1();         public WeekDay1 nextDay(){     if(this==SUN){         return MON;     }     else        return SUN;     }         public String toString() {         return this==SUN?"SUN":"MON" ;       }         public static void main(String[] args) {     System.out.println("WeekDay1's "+WeekDay1.MON);     System.out.println("WeekDay1's "+WeekDay1.MON.nextDay());     System.out.println(WeekDay.MON);//查看控制台输出,有6个constructMethod1和1个constructMethod2,这是因为枚举类的所有枚举常量都是final static的     }                    //调用枚举类的枚举常量,也就实例化了枚举类的一个实例,此时枚举类中static类型的成员首先初始化,故先有了7个输出     public enum WeekDay {                 /*当枚举类有多个构造方法时,可以在枚举常量的后边加上"(int i)",‘i’为枚举类的构造方法的顺序*/                 SUN(),MON(1),TUE,WED,THI,FRI,SAT;                 /*枚举类中的‘所有’【方法】或【代码段】都必须放在‘枚举常量’的‘后边’*/                   //public WeekDay(){};         private WeekDay(){System.out.println("constructMethod1");};  //枚举类的构造方法必须为私有的                 private WeekDay(int x){System.out.println("constructMethod2");};     }     public enum TrafficLamp {     /*    看的懂下面的写法吗?很简单:因为‘枚举常量=枚举类的实例’;而‘枚举常量()=枚举类的实例(枚举类不同的构造函数)’,  *      即用枚举类的不同的构造函数来定义枚举常量;而枚举常量后跟的‘{}’中内容其实是个‘匿名类’,匿名类的定义是:  *      new 父类或接口名(){},所以下面的枚举常量的定义步骤可以分解为以下几步:  *       1)   RED(int time) = new TrafficLamp(int time);  *       2)   new TrafficLamp(int time){  *                .........  *            };  *      */    RED(30){                 public TrafficLamp nextLamp(){                 return YEELOW;         }     },     YEELOW(5){                 public TrafficLamp nextLamp(){                 return GREEN;         }             },     GREEN(45){                 public TrafficLamp nextLamp(){                 return RED;         }             };         private int time;     private TrafficLamp(int time){                 this.time=time;     }     } }


    最新回复(0)