`
elitesunry
  • 浏览: 36273 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java枚举

阅读更多
有时会有key,value映射的需求,可以用java带参数的枚举简单处理(当然,你也可以构造多参数类型):
/**
 * @author elitesunry
 * @mail rysun@qq.com
 * @create 2011-5-11 下午11:52:54
 */
public enum EnumType {
	NO(0), YES(1), UNKNOWN(2);

	private int type;

	private EnumType(int type) {
		this.type = type;
	}

	@Override
	public String toString() {
		return type == 1 ? "是" : (type == 0 ? "否" : "/");
	}
}


/**
 * @author elitesunry
 * @mail rysun@qq.com
 * @create 2011-5-11 下午11:52:29
 */
public class EnumDemo {

	public static void main(String[] args) {
		for (EnumType type : EnumType.values()) {
			System.out.println(type);
		}
		System.out.println("=================");
		System.out.println(EnumType.YES);
		System.out.println(EnumType.NO);
		System.out.println(EnumType.UNKNOWN);
	}
}

当然,如果不关注类型的值,也可以简单写成这样:
/**
 * @author elitesunry
 * @mail rysun@qq.com
 * @create 2011-5-11 下午11:52:54
 */
public enum EnumType {
	NO, YES, UNKNOWN
}


看起来,枚举中的每个字段都好像是一个对象,其实,用下面的代码便可以证实这一点。
public enum Peoples {

	bob("20") {

		@Override
		Object create() {
			return null;
		}

		@Override
		void doSomething() {
		}
	},
	lily("21") {

		@Override
		Object create() {
			return null;
		}

		@Override
		void doSomething() {
		}
	},
	lucy("22") {

		@Override
		Object create() {
			return null;
		}

		@Override
		void doSomething() {
		}
	};
	void method() {
		// do some thing
	}

	abstract Object create();

	abstract void doSomething();

	private String age;

	private Peoples(String age) {
		this.age = age;
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics