목표
자바의 열거형에 대해 학습하세요.
학습할 것 (필수)
- enum 정의하는 방법
- enum이 제공하는 메소드 (values()와 valueOf())
- java.lang.Enum
- EnumSet
enum 정의하는 방법
Enum 는 열거형 혹은 상수집합으로 부른다
class 대신 enum 으로 정의한다
정의 방법은 3가지로 나눠진다
// 1. java 파일로 정의
public enum DevList {
JAVA,
SPRING,
RDBMS,
JPA
}
public class EnumStudyMain {
// 2. 클래스안에 선언
enum MonsterType {UNDEAD, BEAST, ELEMENTAL}
public static void main(String[] args) {
....
}
}
// 3. 클래스밖에 선언
enum MonsterType {UNDEAD, BEAST, ELEMETAL}
public class EnumStudyMain {
....
}
enum 은 기본적으로 static, final 이 내장되어있다
사용 방법은 다음과 같다
public class EnumStudyMain {
public static void main(String[] args) {
System.out.println(DevList.SPRING);
DevList devList = DevList.JAVA;
System.out.println(DevList.JAVA);
}
}
곧바로 사용하거나 변수에 할당해서 사용한다
enum이 제공하는 메소드
values() : 정의된 상수 배열을 반환
public static void main(String[] args) {
// values()
System.out.println(DevList.values());
for (DevList dev : DevList.values()) {
System.out.println(dev);
}
}
valueOf(Class<T> enumType, String name) : 지정된 열거형에서 name과 일치하는 상수를 반환, 일치한게 없으면 에러가 발생한다
public static void main(String[] args) {
// valueOf()
System.out.println(DevList.valueOf("JAVA"));
System.out.println(DevList.valueOf("JAVA2"));
}
ordinal() : 상수의 정의된 순서를 반환
public static void main(String[] args) {
for (DevList dev : DevList.values()) {
System.out.println(dev + " = " + dev.ordinal());
}
}
name() : 상수의 이름을 반환
public static void main(String[] args) {
for (DevList dev : DevList.values()) {
System.out.println(dev.name());
}
}
java.lang.Enum
모든 열거형은 java.lang.Enum 클래스를 상속받는다
컴파일러가 자동으로 호출하니 개발자는 건들 수가 없다
EnumSet
열거형을 위해 구현된 Set 인터페이스이며 다음과 같은 특징을 가진다
- EnumSet은 모두 동일한 열거형 상수만 포함한다
- Null 을 가질 수 없다
- Enum 순서대로 저장된다
- thread-safe 하지 않아서 외부에서 동기화해야한다
'개발 & 방법론 > Java' 카테고리의 다른 글
12주차 : 애노테이션 (0) | 2021.02.25 |
---|---|
10주차 과제 : 멀티쓰레드 프로그래밍 (0) | 2021.02.18 |
9주차 : 예외처리 (0) | 2021.02.14 |
자바 8주차 : 인터페이스 (0) | 2021.02.13 |
7주차 : 패키지 (0) | 2021.01.01 |