열거형의 이해
enum Direction { EAST, SOUTH, WEST, NORTH }
★ 열거형 상수 하나하나가 Direction객체이다. 위의 문장을 클래스로 정의한다면
class Direction {
static final Direction EAST = new Direction("EAST");
static final Direction SOUTH = new Direction("SOUTH");
static final Direction WEST = new Direction("WEST");
static final Direction NORTH = new Direction("NORTH");
private String name;
private Direction(String name) {
this.name = name;
}
}
★ 모든 열거형은 추상 클래스 Enum의 자손이므로, Enum을 흉내 내어 MyEnum을 작성해보자
abstract class MyEnum<T extends MyEnum<T>> implements Comparable<T> {
static int id = 0; // 객체에 붙일 일련번호(0부터 시작)
int ordinal;
String name = "";
MyEnum(String name) {
this.name = name;
ordinal = id++;
}
public int compareTo(T t) {
return ordinal - t.ordinal();
}
}
★ MyEnum<T extends<MyEnum<T>> 선언 : 타입 T가 MyEnum<T>의 자손이어야 한다는 의미
▶ 타입 T가 MyEnum의 자손이므로 ordinal()이 정의되어 있는 것은 분명하므로 형변환 없이도 에러 나지 않음
'Language > java' 카테고리의 다른 글
[Java] 애너테이션_메타 애너테이션 (0) | 2022.08.02 |
---|---|
[Java] 애너테이션 (0) | 2022.08.02 |
[Java] 열거형_열거형에 멤버 추가하기 (0) | 2022.07.30 |
[Java] 열거형_열거형이란? (0) | 2022.07.30 |
[Java] 지네릭스_지네릭 타입의 제거 (0) | 2022.07.29 |
댓글