枚举类在项目中的具体应用

枚举类在项目中的具体应用

在项目开发的过程中,总会碰到固定的名词的多次使用,比如说目前维护的一个设计师项目中,就会出现多个角色信息:设计师,工长,顾客,工人等等.这些信息是不会进行更改的,所以,为了我们方便调用以及提高代码的阅读性和后期维护性,我们可以使用枚举类来定义这些信息,下面就是这个枚举实例的具体使用:

/**
 * 用户类型枚举
 *
 */
public enum UserType {
	/** 设计师:1 */
	DESIGNER(Short.valueOf("1")) {
		public String getUserType() {
			return "设计师";
		}
	},
	/** 工长:2 */
	FOREMAN(Short.valueOf("2")) {
		public String getUserType() {
			return "工长";
		}
	},
	/** 监理:3 */
	SUPERVISOR(Short.valueOf("3")) {
		public String getUserType() {
			return "监理";
		}
	},
	/** 工人:4 */
	WORKER(Short.valueOf("4")) {
		public String getUserType() {
			return "工人";
		}
	},
	/** 客户:5 */
	CUSTOMER(Short.valueOf("5")) {
		public String getUserType() {
			return "客户";
		}
	},
	/** 材料商:6 */
	MATERIAL_DEALER(Short.valueOf("6")) {
		public String getUserType() {
			return "材料商";
		}
	};

	private UserType(Short key) {
		this.key = key;
	}

	private Short key;

	public Short getKey() {
		return this.key;
	}

	public abstract String getUserType();

	public static UserType getUserType(Short code) {
		for (UserType userType : UserType.values()) {
			if (code.equals((userType.getKey())))
				return userType;
		}
		throw new NoSuchElementException(code.toString());
	}
}

在上面的代码中,首先我们有6个不同的角色信息,为了在代码中方便的使用它们,我们给它们了1-6的标识,但是怎么保证通过UserType.value时对应的值是我们想要的信息呢?这时就需要在枚举类中定义一个抽象方法,返回值是String类型,然后让每一个枚举值提供不同的实现.至于最后这个返回值是UserType的getUserType的方法,它的目的是传入一个short值,根据值去循环判断所有的用户类型,进行匹配,匹配到对应的值后,直接返回userType,再就可以使用string的getUserType的方法,获取对应的文字描述了.

上一篇:在直播APP制作时如何设置直播软件聊天发言部分可见的功能


下一篇:不安全的对象引用-垂直越权