Java eNum 초보자 가이드 – 왜 그리고 무엇을 위해 Enum을 사용해야 합니까? 자바 열거형 예제
게시 됨: 2019-04-23 열거형은 변경할 수 없는 변수와 같은 constants
목록입니다. Final keyword
라고 들어보셨나요? 그런거야.
어떤 종류의 숫자 또는 텍스트 데이터를 나타내는 미리 정의된 값 목록이 필요한 경우 열거형을 사용해야 합니다. 예를 들어, 체스 게임에서 다양한 유형의 말을 열거형으로 나타낼 수 있습니다.
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
변수(특히 메서드 매개변수)가 가능한 값의 작은 집합에서 하나만 가져올 수 있는 경우 항상 열거형을 사용해야 합니다. 예는 유형 상수(계약 상태: "영구", "임시", "도제") 또는 플래그("지금 실행", "실행 연기")와 같은 것입니다.
정수(또는 문자열 코드) 대신 열거형을 사용하는 경우 컴파일 시간 검사를 늘리고 잘못된 상수를 전달하는 오류를 방지하며 어떤 값을 사용할 수 있는지 문서화합니다.
자바 예:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName ; public CrunchifyEnumExample ( Company cName ) { this . cName = cName ; } public void companyDetails ( ) { switch ( cName ) { case EBAY : System . out . println ( "EBAY: Biggest Market Place in the World." ) ; break ; case PAYPAL : System . out . println ( "PAYPAL: Simplest way to manage Money." ) ; break ; case GOOGLE : case YAHOO : System . out . println ( "YAHOO: 1st Web 2.0 Company." ) ; break ; default : System . out . println ( "DEFAULT: Google - biggest search giant.. ATT - my carrier provider.." ) ; break ; } } public static void main ( String [ ] args ) { CrunchifyEnumExample ebay = new CrunchifyEnumExample ( Company . EBAY ) ; ebay . companyDetails ( ) ; CrunchifyEnumExample paypal = new CrunchifyEnumExample ( Company . PAYPAL ) ; paypal . companyDetails ( ) ; CrunchifyEnumExample google = new CrunchifyEnumExample ( Company . GOOGLE ) ; google . companyDetails ( ) ; CrunchifyEnumExample yahoo = new CrunchifyEnumExample ( Company . YAHOO ) ; yahoo . companyDetails ( ) ; CrunchifyEnumExample att = new CrunchifyEnumExample ( Company . ATT ) ; att . companyDetails ( ) ; } } |
산출:
1 2 3 4 5 6 7 |
EBAY : Biggest Market Place in the World . PAYPAL : Simplest way to manage Money . YAHOO : 1st Web 2.0 Company . YAHOO : 1st Web 2.0 Company . DEFAULT : Google - biggest search giant . . ATT - my carrier provider . . Process finished with exit code 0 |
Java Enum에 대한 몇 가지 매우 중요한 사항:
포인트-1
모든 열거형은 암시적으로 java.lang.Enum
확장합니다. Java는 다중 상속을 지원하지 않기 때문에 열거형은 다른 것을 확장할 수 없습니다.
포인트-2
Enum in Java are type-safe:
Enum에는 고유한 이름 공간이 있습니다. 이는 아래 예에서 열거형이 "회사"와 같은 유형을 가지며 열거형 상수에 지정된 것 이외의 값을 할당할 수 없음을 의미합니다.
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

포인트-3
생성 시 열거형 상수의 값을 지정할 수 있습니다. MyEnum.values()
는 MyEnum 값의 배열을 반환합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com . crunchify . tutorial ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY ( 30 ) , PAYPAL ( 10 ) , GOOGLE ( 15 ) , YAHOO ( 20 ) , ATT ( 25 ) ; private int value ; private Company ( int value ) { this . value = value ; } } public static void main ( String [ ] args ) { for ( Company cName : Company . values ( ) ) { System . out . println ( "Company Value: " + cName . value + " - Company Name: " + cName ) ; } } } |
산출:
1 2 3 4 5 |
Company Value : 30 - Company Name : EBAY Company Value : 10 - Company Name : PAYPAL Company Value : 15 - Company Name : GOOGLE Company Value : 20 - Company Name : YAHOO Company Value : 25 - Company Name : ATT |
포인트-4
열거형 상수는 암시적으로 정적이며 최종적이며 한 번 생성되면 변경할 수 없습니다.
포인트-5
Enum은 다음을 사용하여 안전하게 비교할 수 있습니다.
- 스위치 케이스 문
- == 연산자
- .equals() 메서드완전한 자습서를 따르십시오.
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
포인트-6
Java에서 Enum의 생성자는 private만 가능하고 Enums 상수는 Enum 자체 내부에서만 생성할 수 있기 때문에 Java에서는 new 연산자를 사용하여 enum의 인스턴스를 생성할 수 없습니다.
포인트-7
Java의 Enum 인스턴스는 Enum 상수가 코드에서 처음 호출되거나 참조될 때 생성됩니다.
포인트-8
열거형은 유형에 할당된 상수 값 목록을 지정합니다.
포인트-9
열거형은 클래스 외부 또는 내부에서 선언할 수 있지만 메서드에서는 선언할 수 없습니다.
포인트-10
클래스 외부에서 선언된 열거형은 static, final, abstract, protected 또는 private로 표시되어서는 안 됩니다.
포인트-11
열거형에는 생성자, 메서드, 변수 및 상수 클래스 본문이 포함될 수 있습니다.
포인트-12
열거형 상수는 BIG(8) 구문을 사용하여 열거형 생성자에 인수를 보낼 수 있습니다. 여기서 int 리터럴 8은 열거형 생성자에 전달됩니다.
포인트-13
열거형 생성자는 인수를 가질 수 있으며 오버로드될 수 있습니다.
포인트-14
열거형 생성자는 코드에서 직접 호출할 수 없습니다. 열거형이 초기화될 때 항상 자동으로 호출됩니다.
포인트-15
열거형 선언 끝에 있는 세미콜론은 선택 사항입니다.
다음은 합법적입니다.
- 열거형 푸 { 하나, 둘, 셋}
- 열거형 푸 { 하나, 둘, 셋};
또 다른 간단한 Java eNUM 예:
열거형은 상수 목록입니다. 어떤 종류의 숫자 또는 텍스트 데이터를 나타내는 미리 정의된 값 목록이 필요한 경우 열거형을 사용해야 합니다.
변수(특히 메서드 매개변수)가 가능한 값의 작은 집합에서 하나만 가져올 수 있는 경우 항상 열거형을 사용해야 합니다. 예는 유형 상수(계약 상태: "영구", "임시", "도제") 또는 플래그("지금 실행", "실행 연기")와 같은 것입니다.
정수(또는 문자열 코드) 대신 열거형을 사용하는 경우 컴파일 시간 검사를 늘리고 잘못된 상수를 전달하는 오류를 방지하며 어떤 값을 사용할 수 있는지 문서화합니다.
그 사이에 열거형을 과도하게 사용하면 메서드가 너무 많은 작업을 수행할 수 있습니다. 갈 길입니다.
이것은 매우 간단한 Java eNum 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public enum CrunchifyEnumCompany { GOOGLE ( "G" ) , YAHOO ( "Y" ) , EBAY ( "E" ) , PAYPAL ( "P" ) ; private String companyLetter ; private CrunchifyEnumCompany ( String s ) { companyLetter = s ; } public String getCompanyLetter ( ) { return companyLetter ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com . crunchify . tutorials ; import com . crunchify . tutorials . CrunchifyEnumCompany ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public static void main ( String [ ] args ) { System . out . println ( "Get enum value for Comapny 'eBay': " + CrunchifyEnumCompany . EBAY . getCompanyLetter ( ) ) ; } } |
산출:
1 |
Get enum value for Comapny 'eBay' : Value : E |