Home >Java >javaTutorial >Detailed explanation of JAVA enumeration (enum)
Java enumeration is a special class that generally represents a set of constants, such as the 4 seasons of a year, the 12 months of a year, the 7 days of a week, and the direction Southeast, northwest, etc.
Java enumeration classes are defined using the enum keyword, and each constant is separated by commas.
For example, define a color enumeration class.
enum Color { RED, GREEN, BLUE; }
The color constants of the above enumeration class Color include RED, GREEN, and BLUE, which represent red, green, and blue respectively.
Usage example:
enum Color { RED, GREEN, BLUE; } public class Test { // 执行输出结果 public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } }
The output result of executing the above code is:
RED
Use enumeration in internal classes Example
The enumeration class can also be declared in the inner class:
public class Test { enum Color { RED, GREEN, BLUE; } // 执行输出结果 public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } }
The output result of executing the above code is:
RED
Each enumeration is implemented internally through Class, and all enumeration values are public static final.
The above enumeration class Color conversion is implemented in the internal class:
class Color { public static final Color RED = new Color(); public static final Color BLUE = new Color(); public static final Color GREEN = new Color(); }
Iterate the enumeration elements
You can use the for statement to iterate the enumeration elements :
enum Color { RED, GREEN, BLUE; } public class MyClass { public static void main(String[] args) { for (Color myVar : Color.values()) { System.out.println(myVar); } } }
The output result of executing the above code is:
RED
GREEN
BLUE
Use enumeration in switch Enumeration class
The enumeration class is often used in switch statements:
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; } } }
The output result of executing the above code is:
Blue
values(), ordinal() and valueOf() methods
The enumeration class defined by enum inherits the java.lang.Enum class by default and implements java. There are two interfaces: lang.Seriablizable and java.lang.Comparable.
values(), ordinal() and valueOf() methods are located in the java.lang.Enum class:
enum Color { RED, GREEN, BLUE; } public class Test { public static void main(String[] args) { // 调用 values() Color arr[] = Color.values(); // 迭代枚举 for (Color col : arr) { // 查看索引 System.out.println(col + " at index " + col.ordinal()); } // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException System.out.println(Color.valueOf("RED")); // System.out.println(Color.valueOf("WHITE")); } }
The output result of executing the above code is:
RED at index 0
GREEN at index 1
BLUE at index 2
RED
Enumeration class members
Like ordinary classes, enumerations can use their own variables, methods and constructors. The constructor can only use the private access modifier. So it cannot be called externally.
Enumerations can contain both concrete methods and abstract methods. If an enumeration class has an abstract method, every instance of the enumeration class must implement it.
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(); } }
The output result of executing the above code is:
Constructor called for : RED
Constructor called for : GREEN
Constructor called for : BLUE
RED
Universal Color
Recommended tutorial: "Java Tutorial"
The above is the detailed content of Detailed explanation of JAVA enumeration (enum). For more information, please follow other related articles on the PHP Chinese website!