ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-03-13 14:48:58  阅读:308  来源: 互联网

标签:Short return String getUserType UserType 枚举 具体 应用 public


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

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

/**
 * 用户类型枚举
 *
 */
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的方法,获取对应的文字描述了.

标签:Short,return,String,getUserType,UserType,枚举,具体,应用,public
来源: https://blog.csdn.net/qq_42001932/article/details/88531819

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有