짬짬히 알게되는 부분에 대해 정리하려한다.
일단 Enum은 한국어로 열거형이라고 한다.
자바 5에서 추가된 자료형으로 의미가 부여된 이름을 갖는 상수를 선언하는 것을 목적으로 만들어졌다.
기본적인 문법은 다음과 같다.
public enum Role {
// Enumerated Value에서 소괄호를 통해 생성자에 인자를 전달할 수 있음.
GUEST("ROLE_GUEST","손님"), // key:"ROLE_GUEST", title:"손님"
USER("ROLE_USER","일반 사용자");
String key;
String title;
private Role(String key, String title){
this.key=key;
this.title=title;
}
}
일단 위의 코드에서 GUEST, USER은 열거형 Role의 열거형 값(Enumerated Value)이라고 한다.
외부에서는 클래스의 필드 접근과 같이 Role.GUEST로 열거형 값에 접근할 수 있다.
enum의 생성자는 private이다. 따라서 enum 객체를 new로 생성하는 것은 컴파일 오류를 발생시킨다.
+) enum에 대한 사실
1. 모든 enum은 java.lang.Enum<E> 클래스를 상속하고, Enum<E>는 Object를 상속한다.
2. 그리고 두 열거형 값은 Role 인스턴스를 참조하는 변수이다. (이는 toString을 Overide 후 각 열거형 값을 콘솔에 출력해보면 마치 Role 객체를 출력할 때(toString이 불리는 것)의 행동과 똑같기 때문이다.)
내용 참고: 윤성우의 열혈 Java 프로그래밍