YJ의 새벽

JAVA (열거형) 본문

SelfStudy/JAVA

JAVA (열거형)

YJDawn 2023. 2. 6. 14:58

 

 

  • 열거형

 

--관련된 상수들을 같이 묶어 놓은것 . 

--열겨형 정의

    enum 열거형이름 { 상수명1, 상수명2 , ... } 

 

enum Direction { EAST , SOUTH , WEST , NORTH }

public class Example {
	public static void main(String[] args) {
		Direction d1 = Direction.EAST;
		Direction d2 = Direction.valueOf("WEST");
		Direction d3 = Enum.valueOf(Direction.class, "EAST");
		
		System.out.println("d1="+d1);   // EAST 
		System.out.println("d2="+d2);   // WEST
		System.out.println("d3="+d3);   // EAST
		
		System.out.println("d1==d2 ? "+ (d1==d2));  //false
		System.out.println("d1==d3 ? "+ (d1==d3));  //true
		System.out.println("d1.equals(d3) ? "+d1.equals(d3)); //true
	//	System.out.println("d2>d3 ? "+ (d1 > d3));    에러
		System.out.println("d1.compareTo(d3) ? "+(d1.compareTo(d3)));  // 0
		System.out.println("d1.compareTo(d2) ? "+(d1.compareTo(d2)));  // -2
		
		switch(d1) {
		case EAST : System.out.println("Direction is EAST");
			break;
		case SOUTH : System.out.println("Direction is SOUTH");
			break;
		case WEST : System.out.println("Direction is WEST");
			break;
		case NORTH : System.out.println("Direction is NORTH");
			break;
			default:
		}
		Direction[] dArr = Direction.values();      //열거형 모든 상수 출력
		for(Direction d : dArr) {
			System.out.println(d.ordinal()+"="+d.name());
		}
	}		
}

 

 

  • 열거형 멤버 추가하기.
enum Direction {
	EAST(1, ">") , SOUTH(2,"V") , WEST(3,"<") , NORTH(4,"^");
	
	private static final Direction[] DIR_ARR = Direction.values();
	private final int value;
	private final String symbol;
	
	Direction(int value, String symbol){  // private 생략
		this.value=value;
		this.symbol=symbol;
	}
	public int getValue() {
		return value;   }
	public String getSymbol() {
		return symbol;  }
	public static Direction of(int dir) {
		if (dir < 1 || dir > 4) {
			throw new IllegalArgumentException("Invalid value: "+dir) ;  //0~3 벗어나면 예외발생
		}else {
			return DIR_ARR[dir-1];			
		}		
	}
	public Direction rotate(int num) {
		num = num % 4 ;
		if(num<0) {
			num+=4; 
			}
			return DIR_ARR[(value-1+num)%4];
	}
	public String toString() {
		return name()+getSymbol();
	}
}   // end of enum Direction

public class Example {
	public static void main(String[] args) {

		for(Direction d : Direction.values()) {
			System.out.println(d.name()+" "+d.getValue());    //값을다 출력
		}
		Direction d1 = Direction.EAST;
		Direction d2 = Direction.of(1);
		
		System.out.println("d1="+d1.name()+" "+d1.getValue());  //d1= EAST 1
		System.out.println("d2="+d2.name()+" "+d2.getValue());  //d2= EAST  1
		System.out.println(Direction.EAST.rotate(1));       // SOUTH V
		System.out.println(Direction.EAST.rotate(2));       // WEST <
		System.out.println(Direction.EAST.rotate(-1));      // NORTH ^
		System.out.println(Direction.EAST.rotate(-2));      // WEST <
	}		
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'SelfStudy > JAVA' 카테고리의 다른 글

JAVA (쓰레드 thread)  (0) 2023.02.07
JAVA (애너테이션)  (0) 2023.02.06
JAVA (제네릭 <?>, 형변환)  (0) 2023.02.05
JAVA (제네릭)  (0) 2023.02.04
JAVA (Collections), 컬렉션 요약정리.  (0) 2023.02.03
Comments