💡 그냥 상수 (final static) 사용하면 되는데, 왜 Enum을 사용?
(1) 코드가 단순해짐. 가독성 좋아짐.
(2) 인스턴스 생성, 상속 방지 => 상수의 타입 안정성 보장됨
(3) 정의한 타입이외의 타입을 가진 데이터값을 compile시 체크함 => 지정한 값이 할당 됐는지 안됐는지 check
// enum class를 이용해 Gender라는 새로운 상수들의 타입을 정의
enum Gender {
MALE,
FEMAL;
}
// 기존의 상수 정의 방법
public static final String MALE = "MALE";
public static final String FEMALE = "FEMALE";
public static void main(String[] args) {
String gender1;
gender1 = EnumExample.MALE;
gender1 = EnumExample.FEMALE;
// MALE, FEMALE이 아닌 상수 값 됨 => 컴파일시 에러 발생 X => 문제!!
gender1 = "boy";
// enum class의 변수 사용
Gender gender2;
gender2 = Gender.MALE;
gender2 = Gender.FEMAL;
// 컴파일 시 의도하지 않는 상수 값을 체크할 수 있음.
gender2 = "boy";
}
public static final Gender MALE = new Gender();
public static final Gender FEMALE = new Gender();
package EnumExample;
public enum DevType {
MOBILE, WEB, SERVER
}
package EnumExample;
public class Developer {
public String name;
public int career;
public DevType type;
}
package EnumExample;
public class Developer {
public String name;
public int career;
public enum DevType {
MOBILE, WEB, SERVER
}
}
package EnumExample;
public class Developer {
public String name;
public int career;
public DevType type;
}
enum DevType {
MOBILE, WEB, SERVER
}
public class Developer {
public String name;
public int career;
public DevType type;
public static void main(String[] args) {
Developer developer = new Developer();
developer.name = "홍길동";
developer.career = 3;
developer.type = DevType.WEB;
System.out.println("개발자 이름 : " + developer.name);
System.out.println("개발자 경력 : " + developer.career);
System.out.println("직무파트 : " + developer.type);
}
}
enum DevType {
MOBILE, WEB, SERVER
}