`
乌托邦之爱
  • 浏览: 278592 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

枚举的使用实例

阅读更多

此类是一个同事给我的实例,通过示例注释了一些个人理解的东西可能是错误的理解,不过为了方便记忆暂时用于此理解方式,然后在详细查询资料.

 

public enum EnumTrafficLamp 
{
	//每一个枚举类RED相当于一个继承了EnumTrafficLamp枚举类的子类
	//EnumTrafficLamp的构造方法设定了变量RED的构造方法中才可以传参
	//通过将枚举RED可以调用其他的GREEN枚举
	RED (15) {
		public EnumTrafficLamp nextLight() {
		return GREEN;
		}
		},
		GREEN(30) {
		public EnumTrafficLamp nextLight() {
		return YELLOW;
		}
		},
		YELLOW(5) {
		public EnumTrafficLamp nextLight() {
		return RED;
		}
		};
		private int time;
		private EnumTrafficLamp() {
		}
		private EnumTrafficLamp(int time) {
		this.time = time;
		}
		//这里是为了上面的枚举中可以使用方法,
		//相当于在EnumTrafficLamp定义了一个抽象方法
		//其他枚举类因为是继承了EnumTrafficLamp类,所以
		//必须实现EnumTrafficLamp类中的抽象方法nextLight()
		public abstract EnumTrafficLamp nextLight();
		public String toString() {
		return name() + ":" + time;
		}
		public EnumTrafficLamp next() {

		if (this.name().equals("RED")) {
		return GREEN;
		} else if (this.name().equals("GREEN")) {
		return YELLOW;
		} else {
		return RED;
		}
		}
		public static void main(String[] args) {
		EnumTrafficLamp lamp = EnumTrafficLamp.RED;
		while (true) {
		System.out.println(lamp.next());
		//lamp的对象是RED返回结果是GREEN,这样就可以通过GREEN去调用另一个
		//为此获得调用循环功能
		lamp = lamp.next();
		}
		}

}

 

public enum TestPojo 
{
	 	A(){
	 		public TestPojo abc()
	 		{
	 			return B;
	 		}
	 	},B(){
	 		public TestPojo abc()
	 		{
	 			return C;
	 		}
	 	},C(){
	 		public TestPojo abc()
	 		{
	 			return A;
	 		}
	 	};
	 	
	 public abstract TestPojo abc();


	 	public TestPojo next()
	 	{
	 		if(name().equals("A"))
	 		{
	 			return B;
	 		}else if(name().equals("B")){
	 			return C;	
	 		}else
	 		{
	 			return A;
	 		}
	 		
	 	}
	 	public static void main(String[] args)
		{
			TestPojo t=TestPojo.A;
			
			while(true){
				System.out.println(t.next());
			t=t.next();
			}
		}
}
 
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics