Enum

Elly·2023년 10월 24일
0
post-thumbnail
  1. 열거형이란?
  • 관련된 상수들을 같이 묶어놓은 것, java는 타입에 안전한 열거형을 제공
	public card{
    enum Kind {CLOVER, HEART, DIAMOND, SPADE}
    enum Value {TWO, THREE, FOUR}
	// 각각 순서대로 0부터 값이 부여된다.
	
    final Kind kind;	// 숫자값이 부여됐어도 타입이 int가 아닌 Kind이다.
    final Value value;
    
    if(Card.Kind.CLOVER == Card.Value.TWO){
    // 컴파일 에러!!
	// 타입이 달라서 비교가 불가능하다.
    }
    
  1. 열거형 타입의 변수를 선언하고 사용하는 방법
	enum Direction {EAST, SOUTH, WEST, NORTH}
    
	class Unit {
    	int x, y;	// 유닛의 위치
        Direction dir;	// 열거형 인스턴스 변수를 선언, 선언한 4개의 값 중 하나가 들어올 수 있음
        
        void init(){
        	dir = Direction.EAST;	// 유닛의 방향을 EAST로 초기화
        	}
        
        // 셋은 모두 같은 의미
        Direction d1 = Direction.EAST;	// 열거형타입.상수이름을 주로 사용	
        Direction d2 = Direction.valueOf("EAST");
        Direction d3 = Enum.valueOf(Direction.class,"EAST");  
        
        Direction[] dArr = Direction.values();	// 열거형의 모든 상수를 배열로 반환
        }
  • 열거형 상수의 비교에 ==와 .equals(), compareTo() 사용가능 / 비교연산자 사용 불가!!
    comepareTo()란?
    왼쪽이 크면 양수, 같으면 0, 오른쪽이 크면 음수
	if(dir == Direction.EAST){	// true
    	x++;
    }else if(dir > Direction.WEST){	// 에러!! 열거형 상수에 "비교연산자" 사용 불가
    	...
    }else if(dir.compareTo(Direction.WEST) > 0){	// comepareTo()가능
    	... 
    }


profile
Backend Developer

0개의 댓글

관련 채용 정보