A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苑占丽 中级黑马   /  2012-7-18 17:23  /  2002 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文


看了好几天的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, 下载次数: 26)

meiju.jpg

1 个回复

正序浏览
不错,注解解释的不错,赞一个!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马