목표
자바의 열거형에 대해 학습하세요.
학습할 것 (필수)
- enum 정의하는 방법
- enum이 제공하는 메소드 (values()와 valueOf())
- java.lang.Enum
- EnumSet
Enum 정의하는 방법
enum Myenum { FIRST, SECOND, THIRD }
멤버 추가하는 방법
enum Myenum { FIRST(1), SECOND(2), THIRD(3); private finla int value; Myenum(int value) { this.value = value; } }
- 멤버 추가시 지정된 값을 저장할수 있는 인스턴스 변수와 생성자를 추가해줘야 한다.
추상메소드 추가하는 방법
enum Myenum { FIRST(1) { int add10(int value) { return value+10 } }, SECOND(2){ int add10(int value) { return value+10 } }, THIRD(3){ int add10(int value) { return value+10 } }; private finla int value; Myenum(int value) { this.value = value; } abstract int add10(int value); protected final int MY_VALUE; }
Enum이 제공하는 메소드 (values()와 valueOf())
- values()
- 이 메소드는 해당 enum의 모든 상수를 배열 형태로 반환한다.
- valueOf()
- 이 메소드는 enumType과 String을 매개변수로 받으며
- String과 일치하는 enum의 상수를 반환한다.
java.lang.enum
- 모든 열거형의 조상
- values() 메소드는 모든 열거형이 가지고 있는 것으로 컴파일러가 자동으로 추가해 준다.
- valueOf 역시 컴파일러가 자동으로 추가해준다.
그 외 enum class에 정의된 메소드들
- Class<E> getDeclaringClass()
- 열거형의 Class 객체를 반환
- String name()
- 열거형 상수의 이름을 문자열로 반환
- int ordinal()
- 열거형 상수가 정의된 순서를 반환 ( 0부터 시작)
- T valueOf(Class<T> enumType, String name)
- 지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다.
EnumSet
- EnumSet은 enum 클래스와 함께 작동하는 특수 Set 컬렉션입니다.
- Set 인터페이스를 구현하고 AbstractSet에서 확장됩니다.
이미지 출처 : https://www.baeldung.com/java-enumset
- EnumSet은 instance를 만드는 메소드를 제외하고는 다른 Set처럼 작동합니다.
EnumSet.allOf(Color.class); //Color 열거형의 모든 요소를 포함 EnumSet.noneOf(Color.class); //빈 Color 열거형 컬렉션
EnumSet의 고려사항
- 열거형 값만 포함 가능하다.
- Null을 추가할수 없다.
- Thread-safe 하지 않다.
- 열거형에 선언된 순서에 맞게 저장됩니다.
- EnumSet의 iterator은 ConcurrentModificationException예외를 던지지 않습니다.
출처
https://www.baeldung.com/java-enumset
자바의정석
https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html
'백선생님 온라인스터디' 카테고리의 다른 글
12주차 애노테이션 (0) | 2021.02.28 |
---|---|
10주차 멀티스레드 프로그래밍 (0) | 2021.01.31 |
9주차 - 예외 처리 (0) | 2021.01.19 |
8주차 - 인터페이스 (0) | 2021.01.16 |
7주차 - 패키지 (0) | 2021.01.12 |