Java枚举方法

Java枚举方法

因为枚举类型实际上是一个类,所以可在枚举类型体中声明一切,也可在类体中声明它。
以下代码使用字段,构造函数和方法定义了一个名为 Level 的枚举。

public enum Level {
  LOW(30), MEDIUM(15), HIGH(7), URGENT(1);

  // Declare an instance variable
  private int levelValue;

  // Declare a private constructor
  private Level(int levelValue) {
    this.levelValue = levelValue;
  }

  public int getLevelValue() {
    return levelValue;
  }
}

上面的代码声明了一个实例变量levelValue,它将为每个枚举常量存储一个值。它还定义了一个私有构造函数,它接受一个int参数。 它将其参数的值存储在实例变量中。
可以向枚举类型添加多个构造函数。但不能向枚举类型添加公共或受保护的构造函数。

Level枚举中声明一个公共方法getLevelValue()。枚举常量声明已更改为 -

LOW(30), MEDIUM(15),  HIGH(7),  URGENT(1);

现在每个枚举常量名称后面都跟着括号中的整数值。LOW(30)是调用int参数类型的构造函数的缩写。当创建枚举常量时,括号中的值将被传递给添加的构造函数。LOW调用默认的无参数构造函数,而LOW(30)调用有参数的构造函数。

示例

以下代码测试Level枚举类型。它打印常量的名称,序数值和它们的下划线值。

enum Level {
  LOW(30), MEDIUM(15), HIGH(7), URGENT(1);

  // Declare an instance variable
  private int levelValue;

  // Declare a private constructor
  private Level(int levelValue) {
    this.levelValue = levelValue;
  }

  public int getLevelValue() {
    return levelValue;
  }
}

public class Main {
  public static void main(String[] args) {
    for (Level s : Level.values()) {
      String name = s.name();
      int ordinal = s.ordinal();
      int underLine = s.getLevelValue();
      System.out.println("name=" + name + ",  ordinal=" + ordinal + ", underLine="
          + underLine);
    }
  }
}

上面的代码生成以下结果。

name=LOW,  ordinal=0, underLine=30
name=MEDIUM,  ordinal=1, underLine=15
name=HIGH,  ordinal=2, underLine=7
name=URGENT,  ordinal=3, underLine=1