`

枚举类demo

 
阅读更多
public class WeekDay1 {
	public static void main(String[] args) {
		WeekDay weekday = WeekDay.FRI;
		//元素初始化一次,第二次不执行构造方法(可以用于实现单例)
		WeekDay weekday2 = WeekDay.MON;
		System.out.println(weekday.name());	//FRI
		System.out.println(weekday.ordinal());	//5
		System.out.println(weekday.valueOf("SUN").toString());	//SUN
		System.out.println(WeekDay.values().length);	//7
//		遍历枚举类所有元素
		for(WeekDay w:WeekDay.values()){
			System.out.println(w.name());
		}
		
		
	}
	
	//枚举类相当于一个类
	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");
		}
	}
	
	/*
	 * 实现抽象的getNextLamp方法:每个元素分别是由枚举类的子类来生成的实例对象,
	 * 这些子类采用类似内部类的方式进行定义。
	 */
	public enum TrafficLamp{
		RED(30){
			@Override
			public TrafficLamp getNextLamp() {
				// TODO Auto-generated method stub
				return GREEN;
			}
			
		},GREEN(45) {
			@Override
			public TrafficLamp getNextLamp() {
				// TODO Auto-generated method stub
				return YELLOW;
			}
		},YELLOW(5) {
			@Override
			public TrafficLamp getNextLamp() {
				// TODO Auto-generated method stub
				return RED;
			}
		};
		private int time;
		private TrafficLamp(int time){
			this.time = time ;
		}
		public abstract TrafficLamp getNextLamp();
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics