enum 정리(자바의 정석)
2023. 5. 21. 17:08ㆍ자바
enum이란 관련된 상수들을 묶어 놓은 것을 말한다.



enum Direction { EAST, SOUTH, WEST, NORTH }
class Ex12_5 {
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); //d1=EAST
System.out.println("d2="+d2); //d2=WEST
System.out.println("d3="+d3); //d3=EAST
System.out.println("d1==d2 ? "+ (d1==d2)); // d1==d2 ? false
System.out.println("d1==d3 ? "+ (d1==d3)); // d1==d3 ? true
System.out.println("d1.equals(d3) ? "+ d1.equals(d3)); // d1.equals(d3) ? true
// System.out.println("d2 > d3 ? "+ (d1 > d3)); // 에러
System.out.println("d1.compareTo(d3) ? "+ (d1.compareTo(d3))); // d1.compareTo(d3) ? 0
System.out.println("d1.compareTo(d2) ? "+ (d1.compareTo(d2))); // d1.compareTo(d2) ? -2
switch(d1) {
case EAST: // 출력
System.out.println("The direction is EAST."); break;
case SOUTH:
System.out.println("The direction is SOUTH."); break;
case WEST:
System.out.println("The direction is WEST."); break;
case NORTH:
System.out.println("The direction is NORTH."); break;
default:
System.out.println("Invalid direction."); break;
}
Direction[] dArr = Direction.values();
for(Direction d : dArr) // for(Direction d : Direction.values())
System.out.printf("%s=%d%n", d.name(), d.ordinal());
/*
EAST=0
SOUTH=1
WEST=2
NORTH=3
*/
}
}


enum Direction2 {
EAST(1, ">"), SOUTH(2,"V"), WEST(3, "<"), NORTH(4,"^");
private static final Direction2[] DIR_ARR = Direction2.values();
private final int value;
private final String symbol;
Direction2(int value, String symbol) { // 접근 제어자 private이 생략됨
this.value = value;
this.symbol = symbol;
}
public int getValue() { return value; }
public String getSymbol() { return symbol; }
public static Direction2 of(int dir) {
if (dir < 1 || dir > 4)
throw new IllegalArgumentException("Invalid value :" + dir);
return DIR_ARR[dir - 1];
}
// 방향을 회전시키는 메서드. num의 값만큼 90도씩 시계방향으로 회전한다.
public Direction2 rotate(int num) {
num = num % 4;
if(num < 0) num +=4; // num이 음수일 때는 시계반대 방향으로 회전
return DIR_ARR[(value-1+num) % 4];
}
public String toString() {
// name()은 enum의 명, getSymbol()은 enum의 symbol값
return name()+getSymbol();
}
} // enum Direction2
class Ex12_6 {
public static void main(String[] args) {
for(Direction2 d : Direction2.values())
System.out.printf("%s=%d%n", d.name(), d.getValue());
/*
EAST=1
SOUTH=2
WEST=3
NORTH=4
*/
Direction2 d1 = Direction2.EAST;
Direction2 d2 = Direction2.of(1);
System.out.printf("d1=%s, %d%n", d1.name(), d1.getValue()); //d1=EAST, 1
System.out.printf("d2=%s, %d%n", d2.name(), d2.getValue()); //d2=EAST, 1
System.out.println(Direction2.EAST.rotate(1).toString()); // SOUTHV
System.out.println(Direction2.EAST.rotate(2)); // WEST<
System.out.println(Direction2.EAST.rotate(-1)); // NORTH^
System.out.println(Direction2.EAST.rotate(-2)); // WEST<
}
}
'자바' 카테고리의 다른 글
| 자바 람다 정리(자바의 정석) (0) | 2023.05.29 |
|---|---|
| 어노테이션 정리(자바의 정석) (0) | 2023.05.22 |
| 제네릭 정리 (자바의 정석) (0) | 2023.05.20 |
| 컬렉션 - hashMap 정리 (0) | 2023.05.17 |
| 자바 문자열 (0) | 2023.04.25 |