java枚举理解

     转载地址: http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951632.html

  

     

package com.base.stu;

/***
 * 
 * @author maizi
 * 
 * 
 * 
 *         枚举是表示一些固定的数据集合。 稳定,有限, 同时也是为了限制对这个变量进行赋值。
 *         
 *         枚举其实就是一个java类而已。 变量,方法都可以定义,也可以自己定义抽象方法。
 *
 */
public class EnumTest {

	// 普通枚举定义
	public enum ColorEnum {
		red, green, blue, black
	};

	// 其实枚举也可以和常用类一样,有属性,方法,
	public enum SeasonEnum {
		spring, summer, autumn, winter;

		private String str = "季节枚举";

		public static SeasonEnum getSeason(int number) {

			if (1 == number) {
				return spring;

			}
			return winter;
		}

	};

	// 带有构造器的枚举
	public enum GenderEnum {

		man("MAN"), woman("WOMAN");

		private final String value; // 枚举的值都是固定的一类值,所以一般里面的都是 final值变量

		private GenderEnum(String value) {

			this.value = value;

		}

		public String getValue() {

			return this.value;
		}

	}

	/**
	 * 订单状态
	 * 
	 * 实现带有抽象方法的枚举
	 * 
	 * @author jiqinlin
	 *
	 */
	public enum OrderState {
		/** 已取消 */
		CANCEL {
			public String getStateName() { // 这些 CANCEL,WAITCONFIRM
										// 就相当代表这个枚举类型,那么就相当与他的子类,
										// 那就必须要实现这个抽象方法。直接理解子类实现父类的抽象方法。
				return "已取消";
			}
		},
		/** 待审核 */
		WAITCONFIRM {
			public String getStateName() {
				return "待审核";
			}
		},
		/** 等待付款 */
		WAITPAYMENT {
			public String getStateName() {
				return "等待付款";
			}
		},
		/** 正在配货 */
		ADMEASUREPRODUCT {
			public String getStateName() {
				return "正在配货";
			}
		},
		/** 等待发货 */
		WAITDELIVER {
			public String getStateName() {
				return "等待发货";
			}
		},
		/** 已发货 */
		DELIVERED {
			public String getStateName() {
				return "已发货";
			}
		},
		/** 已收货 */
		RECEIVED {
			public String getStateName() {
				return "已收货";
			}
		};

		public abstract String getStateName(); // 这个类定义类一个抽象方法
	}

	public static void main(String[] args) {

		ColorEnum colorEnum = ColorEnum.black; // 枚举支持 Switch, 同时获取的时候,通过
												// XXEnum.变量来获取对象。
												// 感觉这样的一个变量就是一个枚举对象。
		switch (colorEnum) {
		case black:

			System.out.println("color is black");
			break;
		case red:
			System.out.println("color is red");
			break;

		case blue:
			System.out.println("color is blue");
			break;

		default:
			break;
		}

		// 枚举循环
		for (SeasonEnum season : SeasonEnum.values()) {

			System.out.println(season);
		}

		// 枚举个数 获取某一个枚举的下标
		System.out.println(SeasonEnum.values().length + "====="
				+ SeasonEnum.winter.ordinal());

		// 调用方法
		System.out.println(GenderEnum.woman.getValue());

		// 抽象
		for (OrderState order : OrderState.values()) {

			System.out.println(order.getStateName()); // 相当与,子类调用各自实现的抽象方法。 
		}

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值