java enum java enumeration tutorial with examples
이 튜토리얼은 Java Enum 클래스 및 생성자에 대해 자세히 설명합니다. 다양한 Java 프로그래밍 예제를 통해 Enum을 사용하는 방법을 배웁니다.
자세한 설명이 제공되는 특별 수업입니다. Java Enum 클래스에 대한 통찰은 지원하는 메소드 목록과 함께 제공됩니다.
Java enum 개념을 구현하는 충분한 프로그램과 인터뷰 중에 질문 할 수있는 몇 가지 자주 묻는 질문이이 튜토리얼에 포함되어있어 쉽게 이해할 수 있습니다.
=> 모두를위한 Java 교육 시리즈를 보려면 여기를 확인하십시오.
학습 내용 :
자바 열거
Java 열거는 인스턴스 변수, 메소드 또는 생성자의 목록 일뿐입니다. 이들은 상수 그룹입니다. 열거의 개념은 JDK5에서 도입되었습니다. 모든 열거 형 상수의 기본 속성은 public, static 및 final입니다.
enum 키워드
열거 형은“ 열거 형 ”.
다음은 열거 형을 생성 할 수있는 구문입니다.
통사론:
enum enumerated_type_name
{
enumerator1, enumerator2,… enumeratorN;
}
노트 : enum은 최상위 클래스 또는 인터페이스 내부 또는 정적 컨텍스트에서만 정의 할 수 있습니다. 메서드 내부에 있으면 안됩니다.
enum 예
이 예에서는 카드라고하는 열거 형에 속하는 스페이드, 하트, 다이아몬드, 클럽 등 4 개의 열거자를 초기화합니다.
그런 다음 각 열거자를 인쇄하려고합니다.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1,a2,a3,a4 respectively. * note that the new keyword was not used here */ cards a1 = cards.spade; cards a2 = cards.club; cards a3 = cards.heart; cards a4 = cards.diamond; System.out.println('Enumerators are: '+ a1 + ',' + a2 + ',' + a3 + ',' + a4); } }
산출:
Enum 클래스
위의 예 (주석 참조)에서주의해야 할 한 가지는 '새 키워드' 인스턴스화하는 동안. 열거 형은 Enum 클래스와 생성자도 정의하지만 새 키워드를 사용하지 않습니다.
프리미티브와 같은 방식으로 정의 된 열거자를 사용할 수 있습니다. Enum은 제네릭 클래스이며 모든 열거는 Enum을 상속합니다.
통사론:
// E는 열거 형입니다.
클래스 Enum
Java에서 Enum을 사용하는 방법
Java 예제를 통해 다양한 시나리오에서 Enum을 사용하는 방법을 살펴 보겠습니다.
클래스 내부
Enum은 클래스 내부 또는 외부 (enum 키워드 예제)로 선언 할 수 있지만 메서드 내부에서는 선언 할 수 없습니다. 여기서 우리는 enum이 클래스 안에서 어떻게 선언되는지 보여줄 것입니다.
아래 예에서 , 우리는 클래스 내부에 열거를 만든 다음 참조 변수 a1의 도움으로 값 또는 열거자를 가져 왔습니다.
public class A { /* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1. * note that the new keyword was not used here */ cards a1 = cards.heart; System.out.println('Card is: '+ a1); } }
산출:
루프를 통해 열거 형 반복
여기에서는 열거 형을 반복하는 방법에 대해 설명합니다. 우리는 4 개의 열거 자 (클래스 외부)로 열거를 선언했습니다. 그런 다음 (클래스 내부) for each 루프를 초기화하고 열거 자의 값을 가져 오려고했습니다.
/* * created an enumeration called games * with four enumerators. */ enum games { ludo, Chess, Badminton, Cricket; } public class A { public static void main(String() args) { /* * used forEach loop and stored the value in 'index' * and printed the value of each enumerator */ System.out.println('Using for each loop'); for (games index:games.values()) { System.out.println(index); } } }
산출:
얼마나 많은 이메일 제공 업체가 있습니까
if-else에서
아래 프로그램에서 세 개의 다른 열거자를 사용하여 열거를 만든 다음 지정된 열거 자 중 하나에 대한 참조 변수에 열거자를 저장했습니다.
그런 다음 OR로 지정된 두 조건을 구현 한 if 조건 검사를 시작하여 해당 조건 중 하나가 충족되면 if 조건에 지정된 명령문을 인쇄합니다.
그렇지 않으면 else 조건에 지정된 명령문을 인쇄합니다.
/* * created an enumeration called players * with three enumerators. */ enum players { sachin, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dhoni */ players a1 = players.dhoni; /* * Started if statement with OR condition. * If any of these conditions are met then it will * print the statement specified inside if statement */ if(a1 == players.virat || a1 == players.sachin) { System.out.println('Sachin and Virat are greatest batsmen'); } /* * if none of the above condition is met then it will * print the below specified statement */ else { System.out.println('Dhoni is the best Captain'); } } }
산출:
In Switch 문
아래 프로그램에서는 4 개의 열거자가있는 열거를 만들었습니다. 그런 다음 참조 변수에 열거 자 중 하나를 저장했습니다. 그 후 Switch 문을 초기화하고 각 열거자를 확인했습니다.
특정 열거자가 발생하면 특정 경우에 지정된 문을 인쇄합니다.
/* * created an enumeration called players * with four enumerators. */ enum players { sachin, dravid, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dravid */ players a1 = players.dravid; /* * Started Switch Statement and if the element * matches with a1 then it will print the statement * specified in the case */ switch(a1) { // does not match case sachin: System.out.println('Sachin is best bastman ever'); break; // matches case dravid: System.out.println('Dravid is the best Test Batsman'); break; // does not match case virat: System.out.println('Virat is modern great'); break; // does not match case dhoni: System.out.println('Dhoni is the best captain ever'); break; } } }
산출:
열거 형 필드 및 방법
열거 형 필드
이 섹션에서는 열거 형 필드에 대해 자세히 설명합니다. Java 열거 형에 필드를 추가 할 수 있으며 각 열거자는 이러한 필드를 가져옵니다. 필드 값은 열거 형 생성자에 할당되어야합니다.
아래 구문에서 열거 형이 세 개의 열거 자로 정의되었음을 알 수 있습니다. 각 열거 자 옆에 int 유형의 필드를 정의했습니다. ( 예 : – (3), (2) 및 (1) 각각).
이것은 Java enum에 int를 취하는 생성자가 있다는 것을 합산합니다. 이 생성자는 int 필드를 설정합니다. 열거자가 정의되면 해당 열거 자에 대해 지정된 int 값이 생성자에 전달됩니다.
통사론:
public enum A { /* * calls a contructor with value * defined on the respective enumerator */ Enumerator1(3), Enumerator2(2), Enumerator3(1) /* * semicolon needed for the last enumerator * if there is a method following it. */ ; private final int constant; private A(int constant) { this.constant = constant; } }
노트 : 예를 들어 Enum 필드에 대해서는“ 열거 형 생성자 ”.
Enum 메서드
# 1) 이름 ()
public final String name () – 호출 상수의 이름을 반환합니다 (변경되지 않았거나 변경되지 않음).
# 2) equals ()
public final boolean equals (Object other) – obj와 호출 객체가 동일한 상수를 참조하면 true를 반환합니다.
# 3) toString
public String toString () – 호출 상수의 이름을 반환합니다. 열거 형 선언에 사용 된 이름과 반드시 일치하지는 않습니다.
# 4) 복제
보호 된 최종 개체 clone ()
throws CloneNotSupportedException – 이는 복제를 시도 할 때 열거 형에서 예외를 throw 함을 의미합니다.
# 5) hashCode ()
public final int hashCode () – 호출하는 객체의 해시 코드를 반환합니다.
# 6) finalize ()
protected final void finalize () – enum 클래스는 finalized 메서드를 가질 수 없습니다. 반환 값이 없습니다.
# 7) compareTo ()
public final int compareTo (E obj) – enum을 지정된 객체 obj와 비교합니다. 개체가 지정된 개체보다 작 으면 음수를 반환합니다. 이 객체가 지정된 객체 obj보다 크면 양수를 반환하고 지정된 obj가이 객체와 같으면 0을 반환합니다.
# 8) getDeclaringClass
public final Class getDeclaringClass () – 호출 상수가 멤버 인 열거 형 (열거 형 선언 클래스라고도 함)을 반환합니다.
# 9) ordinal (), values () 및 valueOf ()
이 모든 방법은 패키지의 일부입니다. java.lang.Enum . 서수 () 메서드는 상수의 인덱스를 기반으로 열거 형 상수의 순서를 반환합니다.
values () 메서드는 열거 형에있는 모든 값을 반환합니다. valueOf (String) 메서드는 입력 문자열의 열거 형 상수를 반환합니다. 지정된 문자열이 상수와 일치하지 않으면 IllegalArgumentException이 발생합니다.
다음은 동일한 예제 (enum 키워드 예제)를 사용하고 세 가지 메서드의 개념을 모두 구현 한 프로그래밍 예제입니다.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * created an array arr() which will store the * value of the constants/enumerators declared in the enumeration */ cards arr() = cards.values(); /* * used forEach loop and stored the value in 'type' * and printed the value as well as index with the help of * ordinal() method */ for (cards type:arr) { System.out.println(type + ' occurs at ' + type.ordinal()); } /* * passed heart as an input String which matches with the * constant declared in 'cards' */ System.out.println(cards.valueOf('heart')); } }
산출:
열거 형 생성자
Enum (클래스이기도하므로)은 열거 자 또는 열거 형 상수를 만드는 동안 데이터를 전달하는 생성자를 지원합니다.
열거 형 생성자의 주요 속성은 프라이빗 또는 프라이빗 패키지라는 것입니다. 이는 클래스 또는 패키지 내에서 액세스 할 수 있음을 의미합니다.
아래 예를 보겠습니다. 여기서 우리는 메서드와 생성자를 모두 사용했습니다. 우선, 5 개의 열거 자와 필드가있는 'players'라는 열거 형을 만들었습니다.
그런 다음 각 플레이어 또는 열거 자 또는 열거 상수가 득점 한 실행 횟수를 반환하는 생성자와 메서드가 있습니다.
그 후, 각 열거자를 저장하고 반복하기 위해 values () 메서드를 사용하여 각 루프에 대해 사용했던 기본 클래스가 있습니다. 또한 각 플레이어가 득점 한 득점 수에 대한 방법을 호출했습니다.
/* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; /* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; players(int r) { runs = r; } int getRuns() { return runs; } } /* * Used values() method to get the enumerators and a for each loop * to get the number of runs scored by each player */ public class A { public static void main(String args()) { for (players a : players.values()) System.out.println(a + ' has scored ' + a.getRuns() + ' ODI runs'); } }
산출:
자주 묻는 질문
Q # 1) Java에서 Iterator와 Enumeration의 차이점은 무엇입니까?
대답: 아래에 Iterator와 Enumeration의 차이점이 있습니다.
반복자 | 열거 |
---|---|
요소를 반복하는 데 사용되는 일반 커서이며 모든 컬렉션 클래스에 적용 할 수 있습니다. | Enum과 같은 레거시 클래스에만 적용 할 수 있으므로 일반 커서가 아닙니다. 컬렉션 클래스에 대한 읽기 권한 만 있습니다. |
일부 메서드는 반복을위한 hasNext (), next ()입니다. | 일부 메서드는 반복을위한 hasMoreElements (), nextElement ()입니다. |
반복자를 사용하여 컬렉션의 요소를 제거 할 수 있습니다. | 컬렉션에는 읽기 권한 만 있기 때문에 열거 형을 사용하여 요소를 제거 할 수 없습니다. |
Q # 2) Enum은 상속을 어떻게 지원합니까?
대답: Afterall Enum은 Java의 클래스이기도하므로 OOPS의 기본 원칙 인 Inheritance를 지원해야합니다. 모든 열거는 java.lang.Enum 클래스를 확장합니다. 클래스는 단일 부모 만 확장 할 수 있으므로 Enum 클래스는 다른 클래스를 확장하지 않습니다.
Enum 클래스의 일부인 toString () (Enum 메소드 섹션에서 설명 됨)은 java.lang.Enum 클래스에서 대체됩니다.
결론
이 튜토리얼에서는 열거 형, 열거 자, Java Enum 클래스 및 열거 형 키워드에 대해 필요한 경우 적절한 예제와 설명을 설명했습니다. 또한 enum 필드가있는 Enum 클래스와 관련된 중요한 메서드에 대한 통찰력을 제공했습니다.
생성자에 대한 통찰력, if-else가있는 열거 형, 스위치 및 루프가 제공되었습니다.
=> 처음부터 Java를 배우려면 여기를 방문하십시오.