목표

자바의 열거형에 대해 학습하세요.

학습할 것 (필수)

  • 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의 고려사항

  1. 열거형 값만 포함 가능하다.
  2. Null을 추가할수 없다.
  3. Thread-safe 하지 않다.
  4. 열거형에 선언된 순서에 맞게 저장됩니다.
  5. 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

+ Recent posts