NOTE
Q: 열거형은 String이라고 선언하지 않아도 되나요?
A: 자바의 자료형은 크게 기본 자료형(int, float, char, ...)과 참조 자료형(class, ...)으로 나뉩니다. enum은 참조 자료형에 속하며 enum형을 가진 형태의 클래스입니다.
enum Gender { MALE, FEMALE; } public class EnumExam { public static void main(String[] args) { Gender gender; gender = Gender.MALE; gender = 1; // 오류 발생 gender = "MALE" // 오류 발생 } }
이 코드에서 enum형인 Gender 클래스로 선언된 gender에 기본 자료형인 int형은 당연히 들어가지 못하고, 문자열도 들어가지 못합니다.
enum형으로 선언된 값만 가질 수 있기 때문에 enum형인 Gender.MALE, Gender.FEMALE만 들어갈 수 있습니다.
String gender1 Gender gender2
gender1은 String으로 선언했고, gender2는 Gender 클래스로 선언된 것으로 자료형이 다릅니다. 즉, Gender 내부에 선언된 MALE, FEMALE은 문자열이 아니라 enum형으로 인식해야 합니다.