专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java枚举类简介

Java枚举类简介

更新时间:2022-11-22 09:30:55 来源:星辉 浏览796次

什么是 Java 中的枚举?

Java 枚举是一种 Java 类型类,用于根据您自己的需要为您的软件定义常量集合。Java 枚举中的每一项都称为常量,一个不可变的变量——一个不能更改的值。常量经常用于帮助定义软件或用户的操作参数和指南。

创建枚举是一项简单的任务,不需要太多讨论。声明枚举是使用标准语法完成的,看起来很像声明Java 类。唯一真正的区别是它使用专门为枚举保留的唯一关键字,并且它们是类型安全的对象。类型安全对象在编译时检查类型一致性,并且

public enum AuthLvl {
    ADMIN,
    USER,
    UNAUTHORIZED
}

上面的代码可用于创建一个枚举,用于在登录时设置用户的授权级别。要访问常量,您只需像调用类类型(例如String或int )一样调用它,然后将其分配给一个变量,然后该变量将附加到用户。让我们看一下用于访问上述常量之一并将其分配给用户的语法。

AuthLvl userLvl = AuthLvl.ADMIN;

名为 userLvl 的变量将具有与声明的枚举类型同名的类型,其值将是常量之一。在此示例中,userLvl设置为 ADMIN 的值,它作为AuthLvl类型类的属性访问。

如何在 Java 中设置枚举值

Java Enum 的伟大之处在于常量除了名称之外还可以有值。例如,可以将特定权限添加为 ADMIN 级别用户的值,例如授予他们写入权限。

让我们使用我们的用户身份验证和权限示例看看代码是什么样的。

public enum Auth {
    ADMIN("Write");
    public final String permission;
    private Auth(String permission) {
        this.permission = permission;
    }
}

上面代码中的 ADMIN 常量中添加了一个新的字符串值“Write”。这是朝着正确方向迈出的重要一步,但您仍然无法访问该值。为了确保访问可用,Java 要求将值分配为final,这是另一种类型的常量。

public final String permission;

从那里您可以更进一步,并为该值命名。命名该值允许通过多种方式访问​​它,以便在需要时更容易定位。要命名枚举常量的值,您需要将其分配给枚举的this值。您可以多次完成此过程,以创建您认为合适的值并将值添加到枚举常量。

private Auth(String permission) {
   this.permission = permission;
}

到目前为止,您已经将枚举和命名常量声明为它的值,从而扩展了它的用途。此外,在这一点上,您甚至通过将值分配给枚举的这个属性来为该值指定一个标签。这样做的好处是您可以使用点表示法按名称检索值。以下代码片段显示了如何定位此值并将其打印到控制台。

这种标记进一步扩展了枚举及其常量的功能,使它们更加灵活和健壮。

接下来,让我们看看我们可以将此枚举合并到我们的代码中的方法。

如何在 Java 中使用枚举

枚举的主要用途是比较,就像我们的简单 auth 枚举示例一样。使用它,您可以将用户的授权级别与其各自的权限进行比较。比较运算可用于if块、switch语句、函数、循环等。

让我们看一下这些用途的几个示例,看看如何执行这些比较。

String[] currUser = {"John Smith", "Write"};
if(Auth.ADMIN.permission == currUser[1]){
   System.out.println(true);
}

在主类中编写的这个设置将检查当前用户的授权级别和权限,然后执行指定的操作。这可以用来验证用户是否有权在软件中执行某些操作,例如编辑信息。

现在您已经了解了如何使用它进行比较,让我们看一下 switch 语句中枚举的实际用例。

Java 枚举示例

使用枚举进行比较验证的最实用方法之一是将其与 switch 语句结合使用。Switch 语句提供了一种为软件操作参数创建显式控制的方法。结合枚举常量的优势,设置控制参数变得更加简单。

下面的视频说明了如何使用 switch 语句设置枚举。

让我们看一下将Auth枚举与 switch 语句相结合的代码片段。

String[] currUser = {"John Smith", Auth.USER.toString()};        
switch (currUser[1]) {
   case "ADMIN":
      Auth level = Auth.ADMIN;
      System.out.println("You have logged in as an Administrator ");
   break;
   case "USER":
      Auth level = Auth.ADMIN;
      System.out.println(Auth.USER);
   break;
   case "UNAUTHORIZED":
      Auth level = Auth.ADMIN;  
      System.out.println(Auth.UNAUTHORIZED);
   break;
}

请注意toString()方法的使用,该方法将常量转换为Java 字符串以用于currUser数组。switch 语句比较每个 case 的字符串,如果提供的 case 匹配,它将执行一个操作。此 switch 语句根据currUser数组中的第二个值设置当前用户级别。

在此示例中,如果大小写匹配,则等效的枚举常量将分配给名为 level 的 Auth 类型变量。然后使用当前用户会话来定义用户的操作参数和权限。

开始在您的软件中使用 Java 枚举

Java 枚举是一个功能强大的工具,可用于执行大量操作、设置控件、参数等。知道如何确定它们何时最有用将主要来自实践。有一个很好的经验法则,即考虑一个值是否只能具有一组特定的不可变值中的一个。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>