Java中的枚举(Enum)是一种特殊的数据类型,用于定义一个固定的、有限的值集合。枚举可以更加安全和简洁地表示某些特定的常量值,避免使用数字或字符串表示常量时出现潜在的错误。
-
基本语法: 定义一个枚举类型使用关键字enum,并且枚举值必须写在枚举类型的最前面:
enum Season { SPRING, SUMMER, AUTUMN, WINTER }
上述示例定义了一个包含四个枚举值的Season枚举类型,分别为SPRING、SUMMER、AUTUMN和WINTER。
-
枚举常量方法: 枚举中的每个枚举值都是一个枚举常量,这些常量可以拥有自己的属性和方法。下面是一个Java代码的示例:
enum Season { SPRING("春天"), SUMMER("夏天"), AUTUMN("秋天"), WINTER("冬天"); private String name; private Season(String name) { this.name = name; } public String getName() { return name; } } public class EnumExample { public static void main(String[] args) { for (Season s : Season.values()) { System.out.println(s + ": " + s.getName()); } } }
在上述示例中,我们在Season枚举中添加了一个name属性和一个getName()方法,用于获取枚举常量的名称。在Main方法中,我们使用了values()方法获取Season枚举中所有的枚举常量,并循环输出每个常量及其名称。
-
枚举的高级用法: 枚举还支持常量相关方法,可以让枚举常量之间具有一定的关联性。下面是一个Java代码的示例:
enum Operation { PLUS("+") { public double apply(double x, double y) { return x + y; } }, MINUS("-") { public double apply(double x, double y) { return x - y; } }, TIMES("*") { public double apply(double x, double y) { return x * y; } }, DIVIDE("/") { public double apply(double x, double y) { return x / y; } }; private String symbol; private Operation(String symbol) { this.symbol = symbol; } public String getSymbol() { return symbol; } public abstract double apply(double x, double y); } public class EnumExample { public static void main(String[] args) { double x = 2.0; double y = 4.0; for (Operation op : Operation.values()) { System.out.printf("%f %s %f = %f%n", x, op.getSymbol(), y, op.apply(x, y)); } } }
在上述示例中,我们定义了一个Operation枚举类型,包含四个枚举常量(PLUS、MINUS、TIMES和DIVIDE)。每个枚举常量都有自己的symbol属性和apply()方法,用于表示一种数学运算符号和对应的实现方法。在Main方法中,我们使用values()方法获取Operation枚举中所有的枚举常量,并循环输出每个常量及其对应的数学运算结果。
通过枚举的高级用法,我们可以更加灵活、简洁地处理常量值相关的业务需求。