본문 바로가기

IT/JAVA

자바 Enum - 백기선님 스터디 11주차 과제

목표

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

학습할 것 (필수)

  • enum 정의하는 방법
  • enum이 제공하는 메소드 (values()와 valueOf())
  • java.lang.Enum
  • EnumSet

enum 정의하는 방법

enum 열거형이름 { 상수명1, 상수명2, ...}

ex)
enum Direction { EAST, SOUTH, WEST, NORTH }

 

 

enum이 제공하는 메소드 (values()와 valueOf())

values()

열거형의 모든 상수를 배열에 담아 반환한다.

모든 열거형이 가지고 있는 메소드로 컴파일러가 자동으로 추가해 준다.

Direction [] dArr = Direction.values();

 

valueOf()

지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다.

Direction d = Direction.valueOf("WEST")

 

java.lang.Enum

모든 열거형의 조상 클래스이다.

위에서 알아본 values(), valueOf() 메서드와 함께 아래 메서드들이 정의되어있다.

메서드 설명
Class<E> getDeclaringClass() 열거형의 Class 객체를 반환한다.
String name() 열거형 상수의 이름을 문자열로 반환한다.
int ordinal() 열거형 상수가 정의된 순서를 반환한다.

 

EnumSet

열거형 타입과 함께 사용하기 위한 특별한 Set 구현체이다.

EnumSet 클래스에는 생성자가 존재하지 않고, abstract 클래스이기 때문에 객체로써 생성 및 사용이 불가능하다.

모든 요소는 단일 열거형 타입이어야 하며 null은 허용되지 않는다.

public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) 비어있는 enum set을 생성
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType) 매개변수로 받은 타입의 모든 요소(열거형 상수들)를 포함하는 enum set 생성
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s) 매개변수로 받은 EnumSet과 동일한 타입을 사용하여 동일한 요소를 포함하는 enum set 생성
public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c) 매개변수로 받은 Collection으로 초기화 된 enum set 생성
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s) 매개 변수의 EnumSet<E> s 에 포함되어 있지 않은 요소들을 포함하는(차집합) enum set 생성
public static <E extends Enum<E>> EnumSet<E> of(E e1) 매개변수로 받은 요소를 포함하는 열거형 집합을 만듦
public static <E extneds Enum<E>> EnumSet<E> range(E from, E to) 매개변수 from과 to의 범위의 모든 요소를 포함하는 enum set 생성, from, to 포함

 

 

Reference)

자바의 정석 - 남궁 성

parkadd.tistory.com/50