这篇文章主要介绍“java的枚举是什么意思”,在日常操作中,相信很多人在java的枚举是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“java的枚举是什么意思”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
<强>老虎强>中的一个重要新特性是枚举构造,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示.Tiger专家,developerWorks的多产作者Brett McLaughlin将解释枚举的定义,介绍如何在应用程序中运用枚举,以及它为什么能够让您抛弃所有旧的公共静态最终代码。
您已经知道,java代码的两个基本的构造块是类和接口。现在老虎又引入了枚举,一般简称它为枚举。这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定义的值集合。
当然,熟练的程序员可以用静态常量实现这项功能,如清单1所示:
清单1。公共静态最终
<>以前public class OldGrade {public 才能;static  final int A =, 1;,, public static final int B =, 2,,, public static final int C =, 3;,, public static final int D =, 4,,, public static final int F =, 5;,, public static final int INCOMPLETE =, 6,,,}说明:我要感谢啊# 39;赖利媒体公司,该公司允许在本文中使用我撰写的Java 1.5老虎:开发商# 39;s笔记本一书中“枚举”这一章中的代码示例(请参阅参考资料)。
然后您就可以让类接受像OldGrade。B这样的常量,但是在这样做的时候,请记住这类常量是Java中int类型的常量,这意味着该方法可以接受任何int类型的值,即使它和OldGrade中定的所有级别都不对应,因此,您需要检测上界和下界,在出现无效值的时候,可能还要包含一个IllegalArgumentException。而且,如果后来又添加另外一个级别(例如OldGrade。WITHDREW_PASSING),那么必须改变所有代码中的上界,才能接受这个新值。
换句话说,在使用这类带有整型常量的类时,该解决方案也许可行,但并不是非常有效。幸运的是,枚举提供了更好的方法。
定义枚举
清单2使用了一个可以提供与清单1相似的功能的枚举:
清单2。简单的枚举类型
package com.oreilly.tiger.ch03;,, public enum Grade ,, {,, A, B, C, D, F, INCOMPLETE ,},
在这里,我使用了新的关键字枚举,为enum提供了一个名称,并指定了允许的值。然后
,成绩就变成了一个枚举类型,您可以按清单3所示的方法使用它:
清单3。使用枚举类型
package com.oreilly.tiger.ch03; public class Student { private String firstName; private String lastName; private Grade grade; public Student(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getFirstName() { return firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getLastName() { return lastName; } public String getFullName() { return new StringBuffer(firstName) .append(" ") .append(lastName) .toString(); } public void assignGrade(Grade grade) { this.grade = grade; } public Grade getGrade() { return grade; } }
用以前定义过的类型建立一个新的枚举(grade)之后,您就可以像使用其他成员变量一样使用它了。当然,枚举只能分配枚举值中的一个(例如,A、C 或 INCOMPLETE)。而且,在assignGrade() 中是没有进行错误检测的代码,也没有考虑边界情况,请注意这是如何做到。
使用枚举值
迄今为止,您所看到的示例都相当简单,但是枚举类型提供的东西远不止这些。您可以逐个遍历枚举值,也可以在 switch 语句中使用枚举值,枚举是非常有价值的。
遍历枚举值
下面我们用一个示例显示如何遍历枚举类型的值。清单 4 所示的这项技术,适用于调试、快速打印任务以及把枚举加载到集合(我很快将谈到)中的工具: