Java if-else进阶-Enum枚举

第一次写后台管理系统时,遇到用户匹配,就套一堆的if-else语句,举个简单的例子:
一般来讲我们的后台管理系统中有不同用户,不同用户拥有不同的权限,这时候一个用户登录,需要判断它的权限,

  • ROLE_FINANCE_ADMIN(财务处管理员)
  • ROLE_EDU_ADMIN(教务处管理员
  • ROLE_USER(用户)

骚操作就来了。

public class judgePermisson {
 public static String judge(String loginName) {
  if(loginName.equals("ROLE_FINACE_ADMIN")) {
   return "ROLE_FIANCE_ADMIN"+"  "+"has A_LEVEL permisson";
  }else if(loginName.equals("ROlE_EDU_ADMIN")) {
   return "ROLE_EDU_ADMIN"+"  "+"has B_LEVEL permisson";
  }else if(loginName.equals("ROLE_USER")) {
   return "ROLE_USER"+"  "+"has C_LEVEL permisson";
  }
  return null;//未找到相应用户
 }
}

这是只有两个成员的代码,当管理系统中有几十个用户信息的时候,那几十个if-else用起来可就是非常爽了,一来不雅观,代码阅读性差,二来,以后再复杂一点,想要加一些功能不好拓展

学过枚举,为什么不用枚举来解决呢

首先定义一个接口userMatch,定义一个op方法

public interface userMatch {
 public String op();
}

然后定义一个枚举类enumUser,并实现接口userMatch

public enum enumUser implements userMatch {
ROLE_FINACE_ADMIN{
  @Override
  public String op() {
   return "ROLE_FINACE_ADMIN"+"  "+"has A_LEVEL permisson";
  }
 },//逗号不能掉
 ROLE_EDU_ADMIN{
  @Override
  public String op() {
   return "ROLE_EDU_ADMIN"+"  "+"has B_LEVEL permisson";
  }
 },
 ROLE_USER{
  @Override
  public String op() {
   return "ROLE_USER"+"  "+"has C_LEVEL permisson";
  }
 };//分号要记得
 }

接下来的调用就变得非常简单了,只需要一行代码,之前的if-else语句不见了!

public class judgePermisson {
 public static String judge(String loginName) {
     return enumUser.valueOf(loginName).op();
     }
 }

这样一来,如果之后想要拓展功能,就不用一个一个对着if-else来修改了,拓展性要好很多。

你可能感兴趣的:(枚举类,Java,if-else)