>Java >java지도 시간 >JAVA 열거형(enum)에 대한 자세한 설명

JAVA 열거형(enum)에 대한 자세한 설명

Guanhui
Guanhui앞으로
2020-07-18 17:35:253206검색

JAVA 열거형(enum)에 대한 자세한 설명

Java 열거형은 일반적으로 1년의 4계절, 12개월, 일주일의 7일, 남동쪽, 북서쪽 방향 등과 같은 일련의 상수를 나타내는 특수 클래스입니다.

Java 열거형 클래스는 enum 키워드를 사용하여 정의되며 각 상수는 쉼표로 구분됩니다.

예를 들어 색상 열거 클래스를 정의합니다.

enum Color 
{ 
  RED, GREEN, BLUE; 
}

위 열거형 클래스 Color의 색상 상수에는 각각 빨간색, 녹색, 파란색을 나타내는 RED, GREEN, BLUE가 포함됩니다.

사용 예:

enum Color
{
  RED, GREEN, BLUE;
}
 
public class Test
{
  // 执行输出结果
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
  }
}

위 코드 실행 결과는 다음과 같습니다.

RED

내부 클래스에서 열거형 사용

열거 클래스는 내부 클래스에서도 선언할 수 있습니다.

public class Test
{
  enum Color
  {
    RED, GREEN, BLUE;
  }
 
  // 执行输出结果
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
  }
}

위 코드 실행 출력 결과는 다음과 같습니다.

RED

각 열거형은 Class를 통해 내부적으로 구현되며 모든 열거형 값은 public static final입니다.

위 열거형 클래스 색상 변환은 내부 클래스에서 구현됩니다:

class Color
{
   public static final Color RED = new Color();
   public static final Color BLUE = new Color();
   public static final Color GREEN = new Color();
}

열거 요소 반복

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

열거 클래스를 스위치에 사용하세요.

열거 클래스는 스위치 문에서 자주 사용됩니다.

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;
  }
 }
}

위 코드를 실행한 결과는 다음과 같습니다.

blue

values(), ordinal() 및 valueOf() 메소드로 정의된 열거형 클래스

enum은 기본적으로 java.lang.Enum 클래스를 상속하고 java.lang.Seriablsible 및 java.lang.Comparable 두 인터페이스를 구현합니다.

values(), ordinal() 및 valueOf() 메소드는 java.lang.Enum 클래스에 있습니다.

  • values()는 열거 클래스의 모든 값을 반환합니다.
  • ordinal() 메서드는 배열 인덱스와 마찬가지로 각 열거형 상수의 인덱스를 찾을 수 있습니다.
  • valueOf() 메서드는 지정된 문자열 값의 열거 상수를 반환합니다.
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"));
  }
}

위 코드를 실행한 결과는 다음과 같습니다.

RED at index 0
GREEN at index 1
BLUE at index 2
RED

열거 클래스 멤버

열거는 일반 클래스처럼 사용할 수 있습니다. . 변수, 메소드 및 생성자, 생성자는 전용 액세스 수정자만 사용할 수 있으므로 외부에서 호출할 수 없습니다.

열거에는 구체적 메소드와 추상 메소드가 모두 포함될 수 있습니다. 열거형 클래스에 추상 메서드가 있는 경우 열거형 클래스의 모든 인스턴스는 이를 구현해야 합니다.

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

추천 튜토리얼: "Java Tutorial"

위 내용은 JAVA 열거형(enum)에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제