enum 열거형이름 {Scissors = 1;...}
예제
enum Direction {EAST,SOUTH,WEST,NORTH} // 객체 형식으로 저장
public class test {
public static void main(String[] args) {
Direction d1 = Direction.EAST; // 열거형 타입.상수이름 (가장 많이 사용)
Direction d2 = Direction.valueOf("WEST"); // 열거형의 값중 WEST가져옴
Direction d3 = Enum.valueOf(Direction.class,"EAST"); // 최고조상인 Enum 클래스를 통해 값 가져오기
System.out.println("d1 ="+d1);
System.out.println("d2 ="+d2);
System.out.println("d3 ="+d3);
System.out.println("d1==d2 ?" + (d1==d2));
System.out.println("d1==d3 ?" + (d1==d3));
System.out.println("d1.equals(d3) ?"+d1.equals(d3));
System.out.println("d1.compareTo(d3) ?"+(d1.compareTo(d3))); // 같은값이라 0
System.out.println("d1.compareTo(d2) ?"+(d1.compareTo(d2))); // 0 - 2 = -2
Direction[] arr = Direction.values();
for(Direction d : arr){
System.out.printf("%s=%d\n",d.name(),d.ordinal()); // name()이름 호출, ordinal()순서 출력
}
}
}
enum Direction{EAST(1), SOUTH(5), WEST(-1), NORTH(10)}
enum Direction{
EAST(1), SOUTH(5), WEST(-1), NORTH(10);
private final int value; // 항상 private 사용
Direction(int value){ this.value = value;} // 생성자 추가
public int getValue() { return value;}
}
예제
enum Direction{
EAST(1,">"), SOUTH(2,"V"), WEST(3,"<"), NORTH(4,"^");
private static final Direction[] DIR_ARR = Direction.values(); // enum 모든 상수값들 불러와 배열에 저장
private final int value;
private final String symbol;
Direction(int value, String symbol) {
this.value = value;
this.symbol = symbol;
}
public int getValue(){ return value;}
public String getSymbol(){return symbol;}
public static Direction of(int dir){ // 예외처리 enum안의 값이 1~4이므로 이 외의 값 입력시 오류
if(dir < 1 || dir >4)
throw new IllegalArgumentException("Invalid value :" +dir);
return DIR_ARR[dir -1]; // 정상이라면 배열에서 값 출력
}
}
class test{
public static void main(String[] args) {
for(Direction d:Direction.values())
System.out.printf("%s=%d\n",d.name(),d.getValue());
Direction d1 = Direction.EAST; // EAST 값 저장
Direction d2 = Direction.of(1); // Direction 배열에서 값 가져옴
System.out.printf("d1=%s, %d\n",d1.name(),d1.getValue()); // 상수값 출력
System.out.printf("d2=%s, %d\n",d2.name(),d2.getValue());
}
}