黑马程序员技术交流社区

标题: 关于枚举。。。。 [打印本页]

作者: 苑占丽    时间: 2012-7-18 17:23
标题: 关于枚举。。。。

看了好几天的java高新技术的视频,关于枚举,回看了几遍,发现好多不懂的地方都自然而然理解了不少。

下面帖出看完张老师的视频后,写出的一个关于枚举的例子,来具体谈谈枚举:

/**

枚举相当于一个类,它可以定义构造方法(必须是私有的),成员变量,普通方法和抽象方法。

枚举里的元素如:SUN,MON,TUE;他们必须定义在枚举类的最开始部分,且枚举元素列表的后面要有分号结束

SUN()和SUN是一样的效果,因为在类加载的时候就已经在调用默认的枚举父类的构造方法了。

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



*/
public class EnumTest {


public static void main(String[] args) {
  System.out.println(TrafficLamp.GREEN.toLocalString()+TrafficLamp.GREEN.time);
  System.out.println(TrafficLamp.YELLOW.toLocalString()+TrafficLamp.YELLOW.time);

  System.out.println(TrafficLamp.RED.toLocalString()+TrafficLamp.RED.time);


}

//定义一个枚举
public enum TrafficLamp {
  GREEN(45){//相当于枚举的一个子类,调用父类枚举类的构造方法
   public TrafficLamp nextLamp(){
    return GREEN;
   
   }
  },
   
  YELLOW(5){
   public TrafficLamp nextLamp(){
    return YELLOW;
   
   }
  },
  RED(30){
   public TrafficLamp nextLamp(){
    return RED;
   
   }
  };
  public abstract TrafficLamp nextLamp();//定义一个抽象方法,让其子类去实现得到枚举值,返回枚举类型
  private int time;
  private TrafficLamp(int time){//枚举类的构造方法必须是私有的,定义表示时间的构造方法
   this.time=time;
   
  }


public String toLocalString(){//通过toLocalString方法得到交通灯的"绿灯"、"黄灯"、、、格式
  if(this==GREEN){
  
  return this==GREEN?"绿灯":"";
  }
  if(this==YELLOW){
   
   return this==YELLOW?"黄灯":"";
   }
         if(this==RED){
   
   return this==RED?"红灯":"";
   }
  
  
return null;
}

}
}



它的运行结果如下图:

meiju.jpg (12.74 KB, 下载次数: 25)

meiju.jpg

作者: hengxing0079    时间: 2014-7-22 00:05
不错,注解解释的不错,赞一个!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2