자바에서는 열거형 또는 Java Enum 프로그래밍 언어에서 명명된 상수 그룹을 나타내는 목적을 수행합니다. Java Enum은 메뉴 선택, 반올림 모드, 명령줄 플래그 등과 같이 컴파일 타임에 가능한 모든 값을 알고 있을 때 사용됩니다. 열거형 유형의 상수 집합은 항상 고정된 상태로 유지될 필요가 없습니다.
Java에서 열거 또는 열거란 무엇입니까?
Java 열거형은 클래스 유형입니다. 비록 우리가 다음을 사용하여 열거형을 인스턴스화할 필요는 없지만 새로운, 다른 클래스와 동일한 기능을 가지고 있습니다. 이 사실은 Java 열거를 매우 강력한 도구로 만듭니다. 클래스와 마찬가지로 생성자를 제공하고, 인스턴스 변수와 메서드를 추가하고, 인터페이스를 구현할 수도 있습니다.
열거형 예:
카드 놀이 덱의 4개 모양은 모양이라는 열거 유형에 속하는 클럽, 다이아몬드, 하트, 스페이드라는 이름의 4개 열거자일 수 있습니다. 다른 예로는 자연 열거 유형(예: 행성, 요일, 색상, 방향 등)이 있습니다.
한 가지 명심해야 할 점은 클래스와 달리 열거형은 다른 클래스를 상속하지도 않고 확장될 수도 없다는 것입니다(즉, 슈퍼클래스가 됨). 변수, 메서드, 생성자를 추가할 수도 있습니다. 열거형의 주요 목적은 우리 자신의 데이터 유형(열거된 데이터 유형)을 정의하는 것입니다.
Java에서 열거형 선언
Enum 선언은 클래스 외부나 클래스 내부에서 수행할 수 있지만 메서드 내부에서는 수행할 수 없습니다.
1. 클래스 외부 선언
자바
// A simple enum example where enum is declared> // outside any class (Note enum keyword instead of> // class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>산출
RED>
2. 클래스 내부 선언
자바
안드로이드를 이용한 이미지 메시지 게임
// enum declaration inside a class.> public> class> Test {> >enum> Color {> >RED,> >GREEN,> >BLUE;> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>산출
RED>
- 열거형 내부의 첫 번째 줄은 상수 목록이어야 하며 그 다음에는 메서드, 변수, 생성자와 같은 다른 항목이 나열되어야 합니다.
- 에 따르면 Java 명명 규칙 , 상수 이름은 모두 대문자로 지정하는 것이 좋습니다.
Java의 Enum 속성
아래에 언급된 것처럼 Enum 뒤에는 특정 속성이 있습니다.
- 모든 열거형은 Class를 사용하여 내부적으로 구현됩니다.
- 모든 열거형 상수는 물체 열거형 유형입니다.
- Enum 유형은 인수로 전달될 수 있습니다. 스위치 진술.
- 모든 열거형 상수는 항상 암시적으로 공개 정적 최종 . 그렇기 때문에 공전 , 열거형 이름을 사용하여 액세스할 수 있습니다. 그렇기 때문에 결정적인 , 하위 열거형을 만들 수 없습니다.
- 우리는 선언할 수 있습니다 메인() 메소드 열거형 내부. 따라서 명령 프롬프트에서 열거형을 직접 호출할 수 있습니다.
다음은 위 속성의 구현입니다.
자바
// A Java program to demonstrate working on enum> // in switch case (Filename Test. Java)> import> java.util.Scanner;> // An Enum class> enum> Day {> >SUNDAY,> >MONDAY,> >TUESDAY,> >WEDNESDAY,> >THURSDAY,> >FRIDAY,> >SATURDAY;> }> // Driver class that contains an object of 'day' and> // main().> public> class> Test {> >Day day;> >// Constructor> >public> Test(Day day) {>this>.day = day; }> >// Prints a line about Day using switch> >public> void> dayIsLike()> >{> >switch> (day) {> >case> MONDAY:> >System.out.println(>'Mondays are bad.'>);> >break>;> >case> FRIDAY:> >System.out.println(>'Fridays are better.'>);> >break>;> >case> SATURDAY:> >case> SUNDAY:> >System.out.println(>'Weekends are best.'>);> >break>;> >default>:> >System.out.println(>'Midweek days are so-so.'>);> >break>;> >}> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >String str =>'MONDAY'>;> >Test t1 =>new> Test(Day.valueOf(str));> >t1.dayIsLike();> >}> }> |
>
>
Java의 메소드 재정의산출
Mondays are bad.>
Java 열거형 프로그램
1. Enum 내부의 주요 기능
명령 프롬프트에서 열거형을 직접 호출할 수 있으므로 열거형 내부에 기본 함수를 선언할 수 있습니다.
다음은 위 속성의 구현입니다.
자바
// A Java program to demonstrate that we can have> // main() inside enum class.> enum> Color {> >RED,> >GREEN,> >BLUE;> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>산출
RED>
2. Enum을 통한 루프
값( )과 루프를 사용하여 Enum을 반복할 수 있습니다. 값() 함수는 값을 반복할 수 있는 상수로 Enum 값의 배열을 반환합니다.
다음은 Enum을 통한 루프 구현입니다.
자바
// Java Program to Print all the values> // inside the enum using for loop> import> java.io.*;> // Enum Declared> enum> Color {> >RED,> >GREEN,> >BLUE;> }> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Iterating over all the values in> >// enum using for loop> >for> (Color var_1 : Color.values()) {> >System.out.println(var_1);> >}> >}> }> |
자바 이런 개념
>
>산출
RED GREEN BLUE>
3. Switch 문의 열거형
자바
// Java Program to implement> // Enum in a Switch Statement> import> java.io.*;> // Driver Class> class> GFG {> >// Enum Declared> >enum> Color {> >RED,> >GREEN,> >BLUE,> >Yellow;> >}> >// Main Function> >public> static> void> main(String[] args)> >{> >Color var_1=Color.Yellow;> > >// Switch case with Enum> >switch>(var_1){> >case> RED:> >System.out.println(>'Red color observed'>);> >break>;> >case> GREEN:> >System.out.println(>'Green color observed'>);> >break>;> >case> BLUE:> >System.out.println(>'Blue color observed'>);> >default>:> >System.out.println(>'Other color observed'>);> >}> >}> }> |
>
>산출
Other color observed>
열거형과 상속
- 모든 열거형은 암시적으로 확장됩니다. java.lang.Enum 클래스 . 클래스는 확장만 가능하므로 하나 Java의 부모인 경우 열거형은 다른 항목을 확장할 수 없습니다.
- toString() 메서드 에서 재정의됨 java.lang.Enum 클래스 , 열거형 상수 이름을 반환합니다.
- enum은 많은 인터페이스를 구현할 수 있습니다.
열거형 및 생성자
- Enum은 생성자를 포함할 수 있으며 Enum 클래스 로딩 시 각 열거형 상수에 대해 별도로 실행됩니다.
- 열거형 객체를 명시적으로 생성할 수 없으므로 열거형 생성자를 직접 호출할 수 없습니다.
열거형 및 메서드
Enum은 둘 다 포함할 수 있습니다. 콘크리트 방법과 추상적인 행동 양식. 열거형 클래스에 추상 메서드가 있는 경우 열거형 클래스의 각 인스턴스는 이를 구현해야 합니다.
자바
// Java program to demonstrate that enums can have> // constructor and concrete methods.> // An enum (Note enum keyword inplace of class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> >// enum constructor called separately for each> >// constant> >private> Color()> >{> >System.out.println(>'Constructor called for : '> >+>this>.toString());> >}> >public> void> colorInfo()> >{> >System.out.println(>'Universal Color'>);> >}> }> public> class> Test {> >// Driver method> >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의 Enum에 대한 FAQ
Q1. new 키워드로 Enum 인스턴스를 생성할 수 있나요?
연령:
아니요. Enum 키워드에는 전용 생성자만 포함되어 있으므로 인스턴스를 생성할 수 없습니다.
Q2. Enum에 추상 메서드를 사용할 수 있나요?
연령:
예, Enum에는 추상 메소드가 있습니다.
Q3. 열거형에서 value() 메서드의 목적은 무엇입니까?
연령:
Java에서는 값( ) 메서드를 사용하여 열거형 내부에 있는 모든 값을 반환할 수 있습니다.
Q4. 열거형에서 valueOf() 메서드의 목적은 무엇입니까?
연령:
valueOf() 메서드는 지정된 문자열 값이 있는 경우 열거형 상수를 반환합니다.
Q5. 열거형에서 ordinal() 메소드의 목적은 무엇입니까?
연령:
ordinal() 메소드를 사용하면 배열 인덱스처럼 각 열거형 상수 인덱스를 찾을 수 있습니다.
Q6. 열거형에서 value(), valueOf() 및 ordinal() 메서드의 사용을 설명하는 프로그램을 Java로 작성합니다.
연령:
산출자바
// Java program to demonstrate working of values(),>// ordinal() and valueOf()>enum>Color {>>RED,>>GREEN,>>BLUE;>}>public>class>Test {>>public>static>void>main(String[] args)>>{>>// Calling values()>>Color arr[] = Color.values();>>// enum with loop>>for>(Color col : arr) {>>// Calling ordinal() to find index>>// of color.>>System.out.println(col +>' at index '>>+ col.ordinal());>>}>>// Using valueOf(). Returns an object of>>// Color with given constant.>>// Uncommenting second line causes exception>>// IllegalArgumentException>>System.out.println(Color.valueOf(>'RED'>));>>// System.out.println(Color.valueOf('WHITE'));>>}>}>>루프 유형에 대한 Java>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
열거형에 대한 다음 기사: Java에서 사용자 정의된 값이 있는 열거형