Java-枚举的使用
最简单使用,强制类型约束
public enum VideoStatus {
Draft, Review, Published
}
// 入参就有明确类型约束
void judgeVideoStatus( VideoStatus status ) {
...
}
自定义扩充枚举
public enum UserRole {
ROLE_ROOT_ADMIN( "系统管理员", 000000 ),
ROLE_ORDER_ADMIN( "订单管理员", 100000 ),
ROLE_NORMAL( "普通用户", 200000 ),
;
// 以下为自定义属性
private final String roleName; //角色名称
private final Integer roleCode; //角色编码
// 以下为自定义构造函数
UserRole( String roleName, Integer roleCode ) {
this.roleName = roleName;
this.roleCode = roleCode;
}
// 以下为自定义方法
public String getRoleName() {
return this.roleName;
}
public Integer getRoleCode() {
return this.roleCode;
}
public static Integer getRoleCodeByRoleName( String roleName ) {
for( UserRole enums : UserRole.values() ) {
if( enums.getRoleName().equals( roleName ) ) {
return enums.getRoleCode();
}
}
return null;
}
}
枚举 + 接口
public interface RoleOperation {
String op(); // 表示某个角色可以做哪些op操作
}
public enum RoleEnum implements RoleOperation {
// 系统管理员(有A操作权限)
ROLE_ROOT_ADMIN {
@Override
public String op() {
return "ROLE_ROOT_ADMIN:" + " has AAA permission";
}
},
// 订单管理员(有B操作权限)
ROLE_ORDER_ADMIN {
@Override
public String op() {
return "ROLE_ORDER_ADMIN:" + " has BBB permission";
}
},
// 普通用户(有C操作权限)
ROLE_NORMAL {
@Override
public String op() {
return "ROLE_NORMAL:" + " has CCC permission";
}
};
}
不需要if/else
public class JudgeRole {
public String judge( String roleName ) {
// 一行代码搞定!之前的if/else灰飞烟灭
return RoleEnum.valueOf(roleName).op();
}
}

浙公网安备 33010602011771号