JavaSE暴露列挙タイプ

2810 ワード

1.シミュレーション列挙タイプ
クラスを定義します.
説明:WeekDayの抽象メソッドnextDay()に対してクラスも抽象として宣言する必要があります!newオブジェクトの場合は抽象的な方法を書き直します!
package cn.itcast.demo;

public abstract class WeekDay {
	private WeekDay(){}//      
	public final static WeekDay SUN=new WeekDay() {
		@Override
		public WeekDay nextDay() {
			return MON;
		}
	};
	public final static WeekDay MON=new WeekDay() {
		@Override
		public WeekDay nextDay() {
			return SUN;
		}
	};
	public final static WeekDay TUES=new WeekDay() {
		@Override
		public WeekDay nextDay() {
			return WED;
		}
	};
	public final static WeekDay WED=new WeekDay() {
		@Override
		public WeekDay nextDay() {
			return THU;
		}
	};
	public final static WeekDay THU=new WeekDay() {
		@Override
		public WeekDay nextDay() {
			return FRI;
		}
	};
	public final static WeekDay FRI=new WeekDay() {
		@Override
		public WeekDay nextDay() {
			return STA;
		}
	};
	public final static WeekDay STA=new WeekDay() {
		@Override
		public WeekDay nextDay() {
			return SUN;
		}
	};
	public  abstract  WeekDay nextDay();
}
試験類WeekDayTest
package cn.itcast.demo;

public class WeekDayTest {
	public static void main(String[] args) {
		WeekDay weekDay=WeekDay.SUN;
		System.out.println(weekDay.nextDay());
	}
}
印刷結果:MON
2.列挙タイプ簡単入門
注意:
1)最初のローのデータは、列挙されたインスタンスのみです.メンバー変数、構築方法を定義できません
2)列挙タイプには構築方法がありますが、privateとしてしか宣言できません.パラメータ付きの構築方法もあります.
3)列挙した例でパラメータ付きの構造方法を使用するには:構文はSUN(パラメータ)
4)列挙の静的メソッドvalueOf(「str」)は、文字列を列挙のオブジェクトタイプに変換できます.
package cn.itcast.demo2;

public enum WeekDay{
	//   SUN(1)             
	SUN(1),MON;//              
	private int day;//       ,    
	private WeekDay(){}//       ,            ,     private
	private WeekDay(int day){//        
		this.day=day;
	}
	public static void main(String[] args) {
		WeekDay weekDay=WeekDay.SUN;//             
		System.out.println(weekDay.day);
		WeekDay weekDay2=WeekDay.MON;//        
		System.out.println(WeekDay.valueOf("SUN"));//         
	}
}

運転結果:1 SUN 3.列挙中の抽象クラス
注意:
1)列挙では抽象メソッドを宣言することもできますが、列挙のインスタンス定数は、メソッドを書き換える必要があります.
package cn.itcast.demo2;

public class TrafficLampTest {
	public static void main(String[] args) {
		TrafficLamp lamp=TrafficLamp.GREEN;
		System.out.println(lamp.nextLamp());//                         
	}
}
enum TrafficLamp{
	RED(50) {
		@Override
		public TrafficLamp nextLamp() {
			return GREEN;
		}
	},GREEN(20) {
		@Override
		public TrafficLamp nextLamp() {
			return YELLOW;
		}
	},YELLOW(10) {//        
		@Override
		public TrafficLamp nextLamp() {
			return RED;
		}
	};
	private TrafficLamp(){}//         
	private int time;//    
	private TrafficLamp(int time){//        
		this.time=time;
	}
	public abstract TrafficLamp nextLamp();//      
}
運転結果:YELLOW