Java에서 열거형 또는 열거형은 상수(불변 값) 그룹, 즉 시간이 지나도 변하지 않는 고정된 값 집합을 나타내는 특별한 유형의 클래스입니다. , 예를 들어 요일, 월, 색상 등 가능한 모든 값은 컴파일 타임에 알려집니다.
열거형은 클래스 유형이므로 사용하려면 인스턴스화해야 한다고 생각할 수도 있지만, 속성, 메서드, 생성자 및 일반 클래스와 동일한 기능을 갖고 있지만 반드시 인스턴스화해야 하는 것은 아닙니다. 인터페이스를 구현하더라도 유일한 고려 사항은 열거형에서 상속 개념을 구현할 수 없다는 것입니다. 주요 목적은 자체 데이터 유형(열거 데이터 유형)을 정의하는 것입니다. 열거형의 강조할 몇 가지 속성은 다음과 같습니다.
클래스 내부나 외부 또는 별도의 파일에서 열거형을 선언할 수 있지만 메서드 내부에서는 선언할 수 없습니다. 열거형을 선언하는 구문은 다음과 같습니다.
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; } }
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!