자바 - 열거형

KH·2023년 3월 26일

Java

목록 보기
8/11

열거형이란?

  • 서로 관련된 상수를 편히라게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용
class Card{
	static final int CLOVER = 0;
    static final int HEART = 1;
    static final int DIAMOND = 2;
    static final int SPACE = 3;
    
    static final int TWO = 0;
    static final int THREE = 1;
    static final int FOUR = 2;
    
    final int kind;
    final int num;
}

class Card{
	enum Kind { CLOVER, HEART, DIAMOND, SPACE}
    enum Vaule { TWO, THREE, FOUR}
    
    final Kind kind;
    final Value num;
}

if(Card.CLOVER == Card.TWO) // 의미가 안맞음 c언어에서는 타입이 달라도 값이 같으면 참이다.
if(Card.Kind.CLOVER == Card.Value.TWO) // 자바에선 컴파일 에러, 값은 같지만 타입이 다르기 때문
  • 위의 예시처럼 값뿐만 아니라 타입도 체크하기 때문에 타입에 안전하다.
  • 상수의 값이 바뀌면 해당 상수를 참조하는 모든 소스를 다시 컴파일 해야한다.
  • 하지만 열거형 상수를 사용하면, 기존의 소스를 다시 컴파일 하지 않아도 된다.
  • 열거형 상수간의 비교에는 '=='을 사용할 수 있다.
    • equals()를 사용하지 않아도 되서 빠른 성능을 제공한다.
    • 열거형 상수간의 비교에는 비교연산자 사용불가

열거형에 멤버 추가하기

  • 열거형 상수 값이 불연속적인 경우에는 열거형 상수의 이름 옆에 원하는 값을 괄호와 함께 적어주면 된다.
  • 지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 한다.
enum Direction { 
	EAST(1, ">"), SOUTH(5, "V"), WEST(-1, "<"), NORTH(10, "^");
	
    private final int value; // 정수 저장할 필드 추가
    private final String symbol;
    
    Direction(int value, String symbol) {
    	this.value = value;
        this.symbol = symbol; } //생성자 추가
}

0개의 댓글