Home  >  Article  >  Java  >  Detailed explanation of JAVA enumeration (enum)

Detailed explanation of JAVA enumeration (enum)

Guanhui
Guanhuiforward
2020-07-18 17:35:253180browse

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:

  • values() returns all values ​​in the enumeration class.
  • The ordinal() method can find the index of each enumeration constant, just like an array index.
  • The valueOf() method returns the enumeration constant of the specified string value.
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!

Statement:
This article is reproduced at:jb51.net. If there is any infringement, please contact admin@php.cn delete