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