Java枚举类型
枚举类型是什么?
枚举类型创建常量的有序列表作为类型。它以特定顺序指定常量。在枚举类型中定义的常量是该枚举类型的实例。
语法
使用关键字enum
定义枚举类型,语法以下:
<access-modifier> enum <enum-type-name> { // List of comma separated names of enum constants }
<access-modifiers>
与类的访问修饰符相同:public
,private
,protected
或package-level
。
<enum-type-name>
是有效的Java
标识符。枚举类型的主体放在大括号中,名称后面。主体可以有逗号分隔的常数和其他元素的列表,例如实例变量,方法等。
在大多数情况下,枚举体只包括常量。
示例
以下代码声明了一个名为Gender
的枚举类型,它声明了两个常量:MALE
和FEMALE
:
public enum Gender { MALE, FEMALE; // The semi-colon is optional }
将枚举常量命名为大写是一种惯例。以下代码声明了一个名为Level
的公共枚举类型,它具有四个枚举常量:LOW
,MEDIUM
,HIGH
和URGENT
。
public enum Level { LOW, MEDIUM, HIGH, URGENT; }
可以从应用程序中的任何位置访问公共枚举类型。公共枚举类型保留在具有枚举类型名称的文件中。 级别枚举将保存在名为Level.java
的文件中。
需要在包中放置枚举类型,使用import
语句来导入枚举类型。
枚举变量
声明枚举类型的变量,就像声明类的变量一样。以下代码声明Level
枚举类型的errorLevel
变量,如下代码所示 -
Level errorLevel;
可以为枚举类型变量分配null
值,如下所示:
Level defectLevel = null;
在 switch 语句中使用枚举类型
可以在switch
语句中使用枚举类型。当switch
表达式是枚举类型时,所有case
标签必须是同一枚举类型的枚举常量。
enum Direction { East, South, West, North } public class Main { public static void main(String args[]) { Direction dir = Direction.South; switch (dir) { case South: System.out.println("south"); break; case East: System.out.println("East"); break; case West: System.out.println("West"); break; case North: System.out.println("North."); break; } } }
上面的代码生成以下结果。
south
嵌套枚举类型
可以在类,接口或另一个枚举类型中有一个嵌套的枚举类型声明。嵌套枚举类型是隐式静态的。 因为枚举类型总是静态的,所以不能在方法体内声明一个局部枚举类型。
对于嵌套枚举类型,可以使用任何访问修饰符(public
,private
,protected
或 package
)级别。
以下代码显示了如何在Person
类中声明名为Gender
的嵌套公共枚举类型。
class Person { public enum Gender { MALE, FEMALE } } public class Main { public static void main(String[] args) { Person.Gender m = Person.Gender.MALE; Person.Gender f = Person.Gender.FEMALE; System.out.println(m); System.out.println(f); } }
Person.Gender
枚举类型可以从应用程序中的任何位置访问,因为它已被声明为public
。也可以通过使用静态导入导入枚举常量来使用枚举常量的简单名称。
import static com.java2s.enums.Person.Gender.*;
枚举类型实现接口
枚举类型可以实现接口。枚举类型实现接口的规则与实现接口的类的规则相同。
下面的代码演示了如何让枚举类型实现一个接口。
interface Command { void execute(); } enum Level implements Command { LOW { public void execute() { System.out.println("Low..."); } }, HIGH { public void execute() { System.out.println("HIGH..."); } }; public abstract void execute(); } public class Main { public static void main(String... args) { for (Command cmd : Level.values()) { cmd.execute(); } } }
上面的代码生成以下结果。
Low... HIGH...
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王