Java 枚举是一种特殊的类,用于表示一组固定的常量值。枚举类使用 enum
关键字来定义,通常用于表示一组相关的常量,比如季节、月份、星期天等。本文将详细介绍 Java 枚举的基本概念、使用方法以及一些高级用法。
1. 定义枚举类
枚举类使用 enum
关键字来定义,各个常量使用逗号 ,
来分割。
示例:
enum Color {RED, GREEN, BLUE;
}
2. 使用枚举
可以像使用普通类一样来使用枚举类。
示例:
enum Color {RED, GREEN, BLUE;
}public class Test {public static void main(String[] args) {Color c1 = Color.RED;System.out.println(c1);}
}
执行结果:
RED
3. 内部类中使用枚举
枚举类也可以声明在内部类中。
示例:
public class Test {enum Color {RED, GREEN, BLUE;}public static void main(String[] args) {Color c1 = Color.RED;System.out.println(c1);}
}
执行结果:
RED
4. 迭代枚举元素
可以使用 for
语句来迭代枚举元素。
示例:
enum Color {RED, GREEN, BLUE;
}public class MyClass {public static void main(String[] args) {for (Color myVar : Color.values()) {System.out.println(myVar);}}
}
执行结果:
RED
GREEN
BLUE
5. 在 switch
中使用枚举类
枚举类常应用于 switch
语句中。
示例:
enum Color {RED, GREEN, BLUE;
}public class MyClass {public static void main(String[] args) {Color myVar = Color.BLUE;switch (myVar) {case RED:System.out.println("红色");break;case GREEN:System.out.println("绿色");break;case BLUE:System.out.println("蓝色");break;}}
}
执行结果:
蓝色
6. values()
, ordinal()
和 valueOf()
方法
enum
定义的枚举类默认继承了 java.lang.Enum
类,并实现了 java.lang.Serializable
和 java.lang.Comparable
两个接口。以下是 values()
, ordinal()
和 valueOf()
方法的用法:
values()
返回枚举类中所有的值。ordinal()
返回枚举常量的索引。valueOf()
返回指定字符串值的枚举常量。
示例:
enum Color {RED, GREEN, BLUE;
}public class Test {public static void main(String[] args) {Color[] arr = Color.values();for (Color col : arr) {System.out.println(col + " at index " + col.ordinal());}System.out.println(Color.valueOf("RED"));// System.out.println(Color.valueOf("WHITE")); // 会抛出 IllegalArgumentException}
}
执行结果:
RED at index 0
GREEN at index 1
BLUE at index 2
RED
7. 枚举类成员
枚举类可以包含变量、方法和构造函数。构造函数只能使用 private
修饰符,所以外部无法调用。
示例:
enum Color {RED, GREEN, BLUE;private Color() {System.out.println("Constructor called for : " + this.toString());}public void colorInfo() {System.out.println("Universal Color");}
}public class Test {public static void main(String[] args) {Color c1 = Color.RED;System.out.println(c1);c1.colorInfo();}
}
执行结果:
Constructor called for : RED
Constructor called for : GREEN
Constructor called for : BLUE
RED
Universal Color
8. 高级用法:枚举和抽象方法
枚举既可以包含具体方法,也可以包含抽象方法。如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。
示例:
enum Color {RED {public String getColorInfo() {return "Color is Red";}},GREEN {public String getColorInfo() {return "Color is Green";}},BLUE {public String getColorInfo() {return "Color is Blue";}};public abstract String getColorInfo();
}public class Test {public static void main(String[] args) {for (Color color : Color.values()) {System.out.println(color.getColorInfo());}}
}
执行结果:
Color is Red
Color is Green
Color is Blue
通过以上内容,我们了解了 Java 枚举的基本概念、使用方法、以及一些高级用法。希望这个教程能帮助你更好地掌握 Java 枚举的使用。