YJ의 새벽
JAVA (열거형) 본문
- 열거형
--관련된 상수들을 같이 묶어 놓은것 .
--열겨형 정의
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