Java面向对象设计 - Java枚举方法
因为枚举类型实际上是一个类类型,所以我们可以在枚举类型体中声明一切,我们可以在类体中声明它。
以下代码使用字段,构造函数和方法定义了一个级别枚举。
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参数。它将其参数的值存储在实例变量中。
我们可以向枚举类型添加多个构造函数。
我们不能向枚举类型添加公共或受保护的构造函数。
级别枚举声明一个公共方法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); } } }
上面的代码生成以下结果。