Java 中的枚举中可以有变量和方法吗?

java 8object oriented programmingprogramming

Java 中的枚举 (enum) 是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天数、一年中的月份等。

您可以使用关键字 enum 定义枚举,后跟枚举名称 −

enum Days {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

枚举中的方法和变量

枚举类似于类,您可以在其中拥有变量、方法和构造函数。枚举中只允许使用具体方法。

示例

在下面的例子中,我们定义了一个名为 Vehicles 的枚举,并在其中声明了五个常量。

除此之外,我们还拥有一个构造函数、一个实例变量和一个实例方法。

枚举 Vehicles {
   //声明枚举的常量
   ACTIVA125、ACTIVA5G、ACCESS125、VESPA、TVSJUPITER;
   //枚举的实例变量
   int i;
   //枚举的构造函数
   Vehicles() {}
//枚举的方法
   public void enumMethod() {
      System.out.println("This is a method of enumeration");
   }
}
public class EnumExample{
   public static void main(String args[]) {
      Vehicles vehicles[] = Vehicles.values();
      for(Vehicles veh: vehicles) {
         System.out.println(veh);
      }
      System.out.println("Value of the variable: "+vehicles[0].i);
      vehicles[0].enumMethod();
   }
}

输出

ACTIVA125
ACTIVA5G
ACCESS125
VESPA
TVSJUPITER
Value of the variable: 0
This is a method of enumeration

示例

在下面的 Java 示例中,我们声明了 5 个带有值的常量,我们有一个实例变量来保存常量的值,一个参数化的构造函数来初始化它,还有一个 getter 方法来获取这些值。

import java.util.Scanner;
enum Scoters {
   //带有值的常量
   ACTIVA125(80000), ACTIVA5G(70000), ACCESS125(75000), VESPA(90000), TVSJUPITER(75000);
   //实例变量
   private int price;
   //用于初始化实例变量的构造函数
   Scoters (int price) {
      this.price = price;
   }
   //显示价格的静态方法
   public static void displayPrice(int model){
      Scoters constants[] = Scoters.values();
      System.out.println("Price of: "+constants[model]+" is "+constants[model].price);
   }
}
public class EnumerationExample {
   public static void main(String args[]) {
      Scoters constants[] = Scoters.values();
      System.out.println("常量的值:");
      for(Scoters d: constants) {
         System.out.println(d.ordinal()+": "+d);
      }
      System.out.println("选择一个模型:");
      Scanner sc = new Scanner(System.in);
      int model = sc.nextInt();
      //调用枚举的静态方法
      Scoters.displayPrice(model);
   }
}

输出

常量的值:
0: ACTIVA125
1: ACTIVA5G
2: ACCESS125
3: VESPA
4: TVSJUPITER
Select one model:
2
Price of: ACCESS125 is 75000

相关文章