인생을 코딩하다.

[Java] 열거형(enum) 본문

Java

[Java] 열거형(enum)

Hyung1 2021. 1. 5. 03:21
728x90
반응형

열거형(enum)

 

- 관련된 상수들을 같이 묶어 놓은 것, Java는 타입에 안전한 열거형을 제공

class Card { 

	// 카드 무늬
    static final int CLOVER = 0;
    static final int HEART = 1;
    static final int DIAMOND = 2;
    static final int SPADE = 3;
    
    // 카드 숫자
    static final int TWO = 0;
    static final int THREE = 1;
    static final int FOUR = 2;
    
    final int Kind;
    final int num;
}

이렇게 일일이 하나씩 상수를 정의하다 보면 너무 많다. 

 

그래서 간단히,

 

class Card{

    //             0,	  1,      2,      3
    enum kind { CLOVER, HEART, DIAMOND, SPADE} // 열거형 Kind를 정의
    enum Value { TWO, THREE, FOUR }            // 열거형 Value를 정의
	
    
    final Kind kind;  						   // 타입이 int가 아닌 Kind임에 유의하자.
    Final Value value;
}

 

무늬는 무늬끼리, 숫자는 숫자끼리 간단하게 정의할 수 있게 해놓는것이 열거형이다.

if(Card.CLOVER==Card.TWO)

두 값 모두 0이니깐 true일까?

true지만 사실 false이어야 의미상 맞다. Card.CLOVER은 무늬고 Card.TWO는 숫자다.

그래서 타입이 달라서 비교가 불가능하기 때문에 컴파일 에러가 뜬다. 자바는 값과 타입을 모두 체크한다.

 

열거형의 정의와 사용

 

- 열거형을 정의하는 방법

enum 열거형이름 {상수명1, 상수명2, ... } -> 이름을 주고 그 안에 상수들을 나열한다.

괄호 안에서 기본적으로 0부터 시작하는 상수를 나열한다

 

-열거형 타입의 변수를 선언하고 사용하는 방법

enum Direction { EAST, SOUTH, WEST, NORTH }

위의 상수 4가지 값만 dir에 들어갈 수 있다.

Class Unit {
    int x, y;       // 유닛의 위치 
    Direction dir;  // 열거형인스턴스 변수를 선언
    
    void init() {   
        dir = Direction.EAST;  // 유닛의 방향을 EAST로 초기화
    }
}

 

- 열거형 상수의 비교 ==와 compareTo()  사용 가능

 

 

728x90
반응형

'Java' 카테고리의 다른 글

[Java] Collection  (0) 2021.01.13
[Java] Call by value의 메모리 관리 과정  (2) 2021.01.09
[Java] Serializable과 NIO  (0) 2020.11.25
[Java] 보조 스트림  (0) 2020.11.24
문자 단위 입출력 스트림  (0) 2020.11.24
Comments