프로그래밍/- java
enum(열거형)
즐겁게 하하하
2022. 2. 4. 09:13
728x90

★ enum Name { 상수명1 , 상수명2 .. }
final Name kind; :: 타입이 Name 타입
- == 와 compareTo() 사용가능 < 같은 비교 연산자 불가능
- java.lang.Enum :: 열거형의 조상
- 열겨헝의 생성자는 묵시적으로 private :: 외부에서 객체 생성 불가
Direction d = new Direction(1); :: 불가능
enum Direction { EAST, SOUTH, WEST, NORTH }
enum Direction2 {
EAST(1, ">>"), SOUTH(2,"vV"), 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; }
}
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) { :: The direction is EAST.
case EAST: // Direction.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
}
}
728x90