💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Java 枚举教程 > 原文: [https://beginnersbook.com/2014/09/java-enum-examples/](https://beginnersbook.com/2014/09/java-enum-examples/) 枚举是一种特殊类型的数据类型,它基本上是常量的集合(集合)。在本教程中,我们将学习如何在 Java 中使用枚举以及我们可以使用它们的可能场景。 #### 这就是我们定义`Enum`的方式 ```java public enum Directions{ EAST, WEST, NORTH, SOUTH } ``` 这里我们有**枚举类型**的变量**方向**,它是四个常数`EAST`,`WEST`,`NORTH`和`SOUTH`的集合。 **如何为枚举类型**赋值? ```java Directions dir = Directions.NORTH; ``` 变量`dir`的类型为`Directions`(即枚举类型)。此变量可以取可能的四个值(`EAST`,`WEST`,`NORTH`,`SOUTH`)中的任何值。在这种情况下,它设置为`NORTH`。 #### 在`if-else`语句中使用`Enum`类型 这就是我们如何在`if-else`逻辑中使用枚举变量。 ```java /* You can assign any value here out of * EAST, WEST, NORTH, SOUTH. Just for the * sake of example, I'm assigning to NORTH */ Directions dir = Directions.NORTH; if(dir == Directions.EAST) { // Do something. Write your logic } else if(dir == Directions.WEST) { // Do something else } else if(dir == Directions.NORTH) { // Do something } else { /* Do Something. Write logic for * the remaining constant SOUTH */ } ``` ## 枚举示例 这只是演示使用枚举的一个示例。如果您了解核心部分和基础知识,您就可以根据需求编写自己的逻辑。 ```java public enum Directions{ EAST, WEST, NORTH, SOUTH } public class EnumDemo { public static void main(String args[]){ Directions dir = Directions.NORTH; if(dir == Directions.EAST) { System.out.println("Direction: East"); } else if(dir == Directions.WEST) { System.out.println("Direction: West"); } else if(dir == Directions.NORTH) { System.out.println("Direction: North"); } else { System.out.println("Direction: South"); } } } ``` **输出:** ```java Direction: North ``` #### 在`Switch-Case`语句中使用`Enum` 下面是演示在`switch-case`语句中使用枚举的示例。 ```java public enum Directions{ EAST, WEST, NORTH, SOUTH } public class EnumDemo { Directions dir; public EnumDemo(Directions dir) { this.dir = dir; } public void getMyDirection() { switch (dir) { case EAST: System.out.println("In East Direction"); break; case WEST: System.out.println("In West Direction"); break; case NORTH: System.out.println("In North Direction"); break; default: System.out.println("In South Direction"); break; } } public static void main(String[] args) { EnumDemo obj1 = new EnumDemo(Directions.EAST); obj1.getMyDirection(); EnumDemo obj2 = new EnumDemo(Directions.SOUTH); obj2.getMyDirection(); } } ``` **输出:** ```java In East Direction In South Direction ``` #### 如何遍历`Enum`变量 ```java class EnumDemo { public static void main(String[] args) { for (Directions dir : Directions.values()) { System.out.println(dir); } } } ``` 此代码将显示所有四个常量。 ## 枚举字段和方法 让我们先举一个例子然后我们将详细讨论它: ```java public enum Directions{ EAST ("E"), WEST ("W"), NORTH ("N"), SOUTH ("S") ; /* Important Note: Must have semicolon at * the end when there is a enum field or method */ private final String shortCode; Directions(String code) { this.shortCode = code; } public String getDirectionCode() { return this.shortCode; } } public class EnumDemo { public static void main(String[] args) { Directions dir = Directions.SOUTH; System.out.println(dir.getDirectionCode()); Directions dir2 = Directions.EAST; System.out.println(dir2.getDirectionCode()); } } ``` 输出: ```java S E ``` 正如您在本示例中所看到的,我们为每个常量都有一个字段`shortCode`,以及一个方法`getDirectionCode()`,它基本上是该字段的获取器方法。当我们定义一个像`EAST ("E")`这样的常量时,它会使用传递的参数调用枚举构造函数(参见上例中的构造函数`Directions`)。这样,传递的值被设置为相应枚举常数`EAST("E")`的字段的值,它会调用构造函数`Directions("E")`,`this.shortCode = code`,即`this.shortCode = "E"`,常数`EAST`的`shortCode`字段设置为`"E"`。 #### 注意事项: 1)在定义枚举时,应在任何字段或方法之前首先声明常量。 2)当在`Enum`中声明了字段和方法时,枚举常量列表必须以分号(`;`)结尾。