Standard Of Java, Chapter 12. Generics

Chapter 12. Enum

  • 열거형 정의 방법은 다양하다.
  • Enum Direction { EAST, SOUTH, WEST, NORTH }
  • 열거형 상수간에 비교에는 ==을 사용할 수 있다.
  • Equals() 가 아닌 ==로 비교가 가능하다는 것은 그만큼 빠른 성능을 제공한다는 것이다.

compareTo()는 왼쪽이 크면 양수 오른쪽이 크면 음수 같으면 0을 반환한다.

Switch문에도 활용 가능하다.

Void move(){
	switch (dir) {
		case EAST : x++;
			break;
		case WEST : x—;
			break;
		case SOUTH : y++;
			break;
		case NORTH : y—;
			break;
	}
}

Enum Direction{
	EAST(1, “>”), SOUTH(2, “V”), WEST(3, “<“), NORTH(4, “^”);
	…..
}
  • 즉, 열거형을 사용하는 장점에 코드가 좀더 깔끔해진다는 것 뿐인가?

  • 열거형의 활용법을 고민해봐야 되겠다.

  • https://github.com/JungHa-Cho/StandardOfJava/blob/master/StandardOfJava/src/com/tistory/devshock/chapter12/AbstractEnum.java

  • 열거형에 추상 메소드를 추가해 열거형 상수가 해당 메소드를 만들도록 강제할수도 있다.

  • 내부적으로 모든 열거형은 추상 메소드 Enum 클래스의 자손이고 각각의 상수는 각각 한개의 객체이다.

  • 내부적으로 열거형은 <T extends Enum<T>>를 제네릭 타입으로 가지고 있고 비교를 위해 Comparable<T>를 구현하고 있따.

  • 복잡한 상속과 구현간의 구조로 인해 열거형에 추상 메서드를 추가하면 각 열거형 상수가 추상 메서드를 구현하도록 강제하는 이유를 설명하고 있는데….

  • 잘 이해되진 않는다. 추가 공부가 필요할 듯 하다.

출처 : 남궁성, 『 자바의 정석 3/E』, 도우출판(2016.1.27), chapter 12 인용.