그만큼 자바의 열거형 고정된 상수 세트를 포함하는 데이터 유형입니다.
요일(SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY), 방향(NORTH, SOUTH, EAST, WEST), 계절(SPRING, SUMMER, WINTER, AUTUMN 또는 FALL)에 사용할 수 있습니다. ), 색상(RED, YELLOW, BLUE, GREEN, WHITE, BLACK) 등. Java 명명 규칙에 따라 모든 상수는 대문자로 표시해야 합니다. 따라서 대문자로 된 열거형 상수가 있습니다.
Java Enum은 고정된 상수 세트(변경되지 않는 변수)가 있는 클래스로 생각할 수 있습니다. Java 열거형 상수는 정적이며 암시적으로 최종적입니다. JDK 1.5부터 사용 가능합니다.
Java의 str.replace
열거형은 클래스와 같은 자체 데이터 유형을 만드는 데 사용됩니다. 그만큼 열거형 데이터 유형(열거 데이터 유형이라고도 함)은 Java에서 열거형을 정의하는 데 사용됩니다. C/C++와 달리 Java의 enum은 더 많은 기능을 제공합니다. 강한 . 여기서는 클래스 내부 또는 클래스 외부에서 열거형을 정의할 수 있습니다.
Java Enum은 내부적으로 열거형 클래스 이므로 다른 클래스를 상속할 수 없지만 많은 인터페이스를 구현할 수 있습니다. Java 열거형에는 필드, 생성자, 메서드 및 기본 메서드가 있을 수 있습니다.
Java Enum에 대해 기억해야 할 사항
- Enum은 유형 안전성을 향상시킵니다.
- Enum은 스위치에서 쉽게 사용할 수 있습니다.
- 열거형을 순회할 수 있음
- Enum은 필드, 생성자 및 메소드를 가질 수 있습니다.
- Enum은 많은 인터페이스를 구현할 수 있지만 Enum 클래스를 내부적으로 확장하기 때문에 어떤 클래스도 확장할 수 없습니다.
Java Enum의 간단한 예
class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }}지금 테스트해보세요
산출:
WINTER SPRING SUMMER FALL
Java enum의 value(), valueOf() 및 ordinal() 메서드를 사용하는 Java enum의 또 다른 예를 살펴보겠습니다.
class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }}
산출:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
참고: Java 컴파일러는 컴파일 타임에 열거형 내에 value(), valueOf() 및 ordinal() 메서드를 내부적으로 추가합니다. 내부적으로 열거형에 대한 정적 및 최종 클래스를 생성합니다.
열거형에서 value() 메서드의 목적은 무엇입니까?
Java 컴파일러는 열거형을 생성할 때 내부적으로 value() 메서드를 추가합니다. 값() 메서드는 열거형의 모든 값을 포함하는 배열을 반환합니다.
쿼리 선택기
열거형에서 valueOf() 메서드의 목적은 무엇입니까?
Java 컴파일러는 열거형을 생성할 때 내부적으로 valueOf() 메서드를 추가합니다. valueOf() 메소드는 주어진 상수 열거형의 값을 반환합니다.
열거형에서 ordinal() 메소드의 목적은 무엇입니까?
Java 컴파일러는 열거형을 생성할 때 내부적으로 ordinal() 메서드를 추가합니다. ordinal() 메소드는 enum 값의 인덱스를 반환합니다.
Java 열거형 정의
열거형은 클래스와 유사하므로 클래스 내부 또는 외부에서 정의할 수 있습니다. 열거형 상수 끝에 있는 세미콜론(;)은 선택 사항입니다. 예를 들어:
enum Season { WINTER, SPRING, SUMMER, FALL }
또는,
enum Season { WINTER, SPRING, SUMMER, FALL; }
Java enum의 정의는 모두 동일합니다.
Java Enum 예: 클래스 외부에서 정의됨
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}지금 테스트해보세요
산출:
WINTER
Java Enum 예: 클래스 내부에 정의됨
class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }}지금 테스트해보세요
산출:
WINTER
Java Enum 예: Enum 내부의 기본 메소드
enum 내부에 main() 메소드를 넣으면 enum을 직접 실행할 수 있습니다.
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
산출:
WINTER
열거형 상수에 대한 특정 값 초기화
열거형 상수는 0, 1, 2, 3 등으로 시작하는 초기 값을 갖습니다. 그러나 필드와 생성자를 정의하여 특정 값을 열거형 상수로 초기화할 수 있습니다. 앞에서 지정한 대로 Enum에는 필드, 생성자 및 메서드가 있을 수 있습니다.
열거형 상수에 초기값을 지정하는 예
class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }}지금 테스트해보세요
산출:
int를 문자열 java로 캐스팅
WINTER 5 SPRING 10 SUMMER 15 FALL 20
열거형 유형의 생성자는 비공개입니다. 비공개 컴파일러를 선언하지 않으면 내부적으로 비공개 생성자가 생성됩니다.
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
위의 enum 유형 예에 대해 컴파일러에서 생성된 내부 코드
final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } }
새로운 키워드로 Enum 인스턴스를 생성할 수 있나요?
아니요. 전용 생성자만 포함되어 있기 때문입니다. |
Enum에 추상 메서드를 사용할 수 있나요?
물론이죠! 우리는 추상 메소드를 가질 수 있고 이러한 메소드의 구현을 제공할 수 있습니다.
스위치 문의 Java Enum
주어진 예와 같이 스위치 문에 열거형을 적용할 수 있습니다.
switch 문에 Enum을 적용하는 예
class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }}지금 테스트해보세요
산출:
monday