更新时间:2022-11-22 09:30:55 来源:极悦 浏览906次
Java 枚举是一种 Java 类型类,用于根据您自己的需要为您的软件定义常量集合。Java 枚举中的每一项都称为常量,一个不可变的变量——一个不能更改的值。常量经常用于帮助定义软件或用户的操作参数和指南。
创建枚举是一项简单的任务,不需要太多讨论。声明枚举是使用标准语法完成的,看起来很像声明Java 类。唯一真正的区别是它使用专门为枚举保留的唯一关键字,并且它们是类型安全的对象。类型安全对象在编译时检查类型一致性,并且
public enum AuthLvl {
ADMIN,
USER,
UNAUTHORIZED
}
上面的代码可用于创建一个枚举,用于在登录时设置用户的授权级别。要访问常量,您只需像调用类类型(例如String或int )一样调用它,然后将其分配给一个变量,然后该变量将附加到用户。让我们看一下用于访问上述常量之一并将其分配给用户的语法。
AuthLvl userLvl = AuthLvl.ADMIN;
名为 userLvl 的变量将具有与声明的枚举类型同名的类型,其值将是常量之一。在此示例中,userLvl设置为 ADMIN 的值,它作为AuthLvl类型类的属性访问。
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;
}
到目前为止,您已经将枚举和命名常量声明为它的值,从而扩展了它的用途。此外,在这一点上,您甚至通过将值分配给枚举的这个属性来为该值指定一个标签。这样做的好处是您可以使用点表示法按名称检索值。以下代码片段显示了如何定位此值并将其打印到控制台。
这种标记进一步扩展了枚举及其常量的功能,使它们更加灵活和健壮。
接下来,让我们看看我们可以将此枚举合并到我们的代码中的方法。
枚举的主要用途是比较,就像我们的简单 auth 枚举示例一样。使用它,您可以将用户的授权级别与其各自的权限进行比较。比较运算可用于if块、switch语句、函数、循环等。
让我们看一下这些用途的几个示例,看看如何执行这些比较。
String[] currUser = {"John Smith", "Write"};
if(Auth.ADMIN.permission == currUser[1]){
System.out.println(true);
}
在主类中编写的这个设置将检查当前用户的授权级别和权限,然后执行指定的操作。这可以用来验证用户是否有权在软件中执行某些操作,例如编辑信息。
现在您已经了解了如何使用它进行比较,让我们看一下 switch 语句中枚举的实际用例。
使用枚举进行比较验证的最实用方法之一是将其与 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 枚举是一个功能强大的工具,可用于执行大量操作、设置控件、参数等。知道如何确定它们何时最有用将主要来自实践。有一个很好的经验法则,即考虑一个值是否只能具有一组特定的不可变值中的一个。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习