> Java > java지도 시간 > Java의 열거형이란 무엇입니까?

Java의 열거형이란 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-03 00:17:08
원래의
163명이 탐색했습니다.

¿Qué son los enums en Java?

Java에서 열거형 또는 열거형은 상수(불변 값) 그룹, 즉 시간이 지나도 변하지 않는 고정된 값 집합을 나타내는 특별한 유형의 클래스입니다. , 예를 들어 요일, 월, 색상 등 가능한 모든 값은 컴파일 타임에 알려집니다.

열거형은 클래스 유형이므로 사용하려면 인스턴스화해야 한다고 생각할 수도 있지만, 속성, 메서드, 생성자 및 일반 클래스와 동일한 기능을 갖고 있지만 반드시 인스턴스화해야 하는 것은 아닙니다. 인터페이스를 구현하더라도 유일한 고려 사항은 열거형에서 상속 개념을 구현할 수 없다는 것입니다. 주요 목적은 자체 데이터 유형(열거 데이터 유형)을 정의하는 것입니다. 열거형의 강조할 몇 가지 속성은 다음과 같습니다.

  • 각 열거형은 내부적으로 클래스 유형을 사용하여 클래스로 구현됩니다.
  • 열거형의 각 상수는 열거형 유형의 개체를 나타냅니다.
  • 모든 열거형은 암시적으로 java.lang.Enum을 확장합니다. 클래스는 상위 클래스에서만 확장할 수 있고 열거형은 다른 클래스에서 확장할 수 없습니다.
  • 열거형의 각 상수는 암시적으로 public static final 유형입니다.
  • 스위치 등의 제어 구조에 사용할 수 있습니다.
  • main() 메서드는 열거형 내부에서 선언될 수 있습니다.
  • toString() 메서드가 재정의되어 상수 이름을 반환합니다.

열거형 선언

클래스 내부나 외부 또는 별도의 파일에서 열거형을 선언할 수 있지만 메서드 내부에서는 선언할 수 없습니다. 열거형을 선언하는 구문은 다음과 같습니다.

enum NombreEnum {
    CONSTANTE1, CONSTANTE2, CONSTANTE3, ...
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

관례에 따라 열거형의 상수는 대문자로 작성됩니다.
일반적으로 열거형의 첫 번째 줄은 상수 선언이고, 그 뒤에는 필요한 경우 속성, 메서드 및 생성자가 옵니다.

// Enum declarado fuera de una clase
enum Color {
    RED, GREEN, BLUE;
}

public class Main {
    public static void main(String[] args) {}
}
로그인 후 복사
로그인 후 복사
로그인 후 복사
// Enum declarado dentro de una clase
public class Main {
    public static void main(String[] args) {}

    enum Color {
        RED, GREEN, BLUE;
    }
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

열거형의 상수에 액세스하려면 열거형 이름 뒤에 마침표와 상수 이름만 사용하면 됩니다.

Color color = Color.RED;
로그인 후 복사
로그인 후 복사
로그인 후 복사

꼭 필요하지는 않을 수도 있지만 선언된 대로 상수의 이름을 가져와야 하는 경우 name() 메서드를 사용할 수 있습니다. 필요한 경우 toString() 메서드에서 생략하는 경우도 있습니다. 좀 더 설명적인 내용입니다.

System.out.println(Color.RED.name()); // RED
System.out.println(Color.RED); // RED
로그인 후 복사
로그인 후 복사
로그인 후 복사

열거형에서 상수 가져오기

모든 상수가 포함된 배열을 반환하는 value() 메서드를 사용하여 열거형의 모든 상수를 얻을 수 있습니다.

enum NombreEnum {
    CONSTANTE1, CONSTANTE2, CONSTANTE3, ...
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

이름을 기반으로 상수를 가져와야 하는 경우 입력으로 받거나 파일이나 데이터베이스에서 가져오거나 valueOf() 메서드를 사용할 수 있으므로 다음 사항만 고려하면 됩니다. 메소드는 대소문자를 구분하므로 이름이 어떤 상수와도 일치하지 않으면 IllegalArgumentException이 발생합니다.

// Enum declarado fuera de una clase
enum Color {
    RED, GREEN, BLUE;
}

public class Main {
    public static void main(String[] args) {}
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

이전에 우리는 모든 상수를 배열로 얻는 방법을 보았으므로 상수의 인덱스를 얻는 것이 가능하다고 생각할 수도 있습니다. 대답은 '예'입니다. 서수() 메서드를 사용하여 얻을 수 있습니다. 상수의 인덱스입니다. 배열과 마찬가지로 인덱스는 0부터 시작합니다.

// Enum declarado dentro de una clase
public class Main {
    public static void main(String[] args) {}

    enum Color {
        RED, GREEN, BLUE;
    }
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

스위치에서 열거형 사용

열거형 사용의 장점 중 하나는 스위치 제어 구조에서 열거형을 사용할 수 있어 코드를 단순화하고 읽기 쉽게 만들 수 있다는 것입니다.

Color color = Color.RED;
로그인 후 복사
로그인 후 복사
로그인 후 복사

열거형의 속성 및 생성자

열거형의 각 상수는 일반 클래스와 마찬가지로 사용자 정의 속성을 가질 수 있습니다. 속성을 초기화하는 생성자가 있어야 한다는 점만 고려하면 됩니다. 이렇게 하면 상수를 로드할 때 암시적으로 해당 생성자를 호출합니다. 각 상수가 선언에서 enum 유형의 객체라는 것을 알고 생성자에 따라 속성 값을 전달해야 합니다.

System.out.println(Color.RED.name()); // RED
System.out.println(Color.RED); // RED
로그인 후 복사
로그인 후 복사
로그인 후 복사

이 열거형에는 3개의 상수가 있습니다. 각 상수에는 이름, 수준, 설명이라는 3가지 속성과 모든 상수에 공통적인 코드 속성이 있지만 생성자에서 초기화할 필요는 없습니다. 일정한 값. 각 속성은 서로 다른 액세스 수정자를 가질 수 있으며 모두 필요에 따라 다릅니다.

열거형의 메서드

이전 예를 고려하면 각 속성이 비공개 유형이므로 해당 속성에 액세스할 수 있는 방법이 필요하며 각 속성에 대해 getter 메서드를 선언할 수 있다고 추론할 수 있습니다.

Color[] colors = Color.values();

for (Color color : colors) {
    System.out.println(color);
}
로그인 후 복사

또한 열거형에서 유틸리티 메소드(예: 레벨에 따라 상수를 얻을 수 있는 메소드)를 선언할 수도 있습니다. 열거형을 인스턴스화할 수 없으므로 메서드가 정적이어야 한다는 점만 고려하면 됩니다.

enum NombreEnum {
    CONSTANTE1, CONSTANTE2, CONSTANTE3, ...
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

열거형의 추상 메서드

우리는 열거형에서 메소드를 구현하는 방법을 이미 살펴보았지만 메소드를 다르게 구현하기 위해 각 상수가 필요한 경우 추상 메소드를 선언할 수 있으며 각 상수는 이를 고유한 방식으로 구현해야 합니다. 상수 선언이 약간 변경됩니다. 예를 들어, 콘솔을 통해 각 상수의 권한을 인쇄하는 추상 메서드 showPermissions()를 선언해 보겠습니다.

// Enum declarado fuera de una clase
enum Color {
    RED, GREEN, BLUE;
}

public class Main {
    public static void main(String[] args) {}
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

열거형의 인터페이스

열거형은 하나 이상의 인터페이스를 구현할 수 있으며, 일반 클래스와 동일한 방식으로 인터페이스를 쉼표로 구분하기만 하면 됩니다.

// Enum declarado dentro de una clase
public class Main {
    public static void main(String[] args) {}

    enum Color {
        RED, GREEN, BLUE;
    }
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

EnumSet 및 EnumMap

Java는 enum과 함께 작동하도록 설계되었기 때문에 각각 HashSet 및 HashMap 클래스보다 더 효율적인 EnumSet 및 EnumMap이라는 두 가지 클래스를 제공합니다. EnumSet은 열거형의 고유 요소 모음인 반면, EnumMap은 열거형을 키로 사용하는 Map 구현입니다.

Color color = Color.RED;
로그인 후 복사
로그인 후 복사
로그인 후 복사

완전한 예

우리는 이미 열거형의 다양한 특성을 살펴보았습니다. 이제 모든 특성을 활용하는 예를 살펴보겠습니다.

System.out.println(Color.RED.name()); // RED
System.out.println(Color.RED); // RED
로그인 후 복사
로그인 후 복사
로그인 후 복사

결론

Enum은 Java에서 매우 유용한 기능입니다. 이를 통해 자체 데이터 유형을 정의할 수 있어 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만들고 상수를 더 효율적으로 사용할 수 있습니다. 새로운 기능은 아니지만 대부분의 경우 코드를 단순화하는 데 도움이 되므로 이에 대해 알고 사용 방법을 아는 것이 중요합니다.

위 내용은 Java의 열거형이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿