본문 바로가기

Java

Live Study _ 11주차. Enum(열거 타입)

<학습 목표>

1. Enum 정의하는 방법

2. Enum이 제공하는 메소드 values() & valueOf()

3. java.lang.Enum

4. EnumSet


1. Enum 정의하는 방법 : 

 

데이터 중에는 몇 가지로 한정된 값만을 갖는 경우가 흔히 있다. 

예) 요일에 대한 데이터인 월, 화, 수, 목, 금, 토, 일. 7가지의 값만 가지고

계절 또한 봄, 여름, 가을, 겨울이라는 4가지 값만 갖는다. 

 

이처럼 한정된 값만 갖는 데이터 타입이 Enumeration Type 즉 열거 타입이다. 

열거 타입은 몇개의 열거 상수(Enumeration constant) 중에서 하나의 상수를 저장하는 데이터 타입이다. 

 

  • Enum type 선언

   

 

Public enum 키워드는 열거 타입을 선언하기 위한 키워드이다. 

Week은 열거 타입 이름을 뜻하고 안에 들어 있는 요일은 열거 상수이다. 

이렇게 열거 타입을 선언하면 사용할 수 있게 된다. 

 

  • Enum type 변수

열거 타입 변수 선언 :  Week today = null;

일(1)~토(7)까지의 숫자를 리턴 : int week = cal.get(Calendar.DAY_OF_WEEK);

열거 상수 대입 : today = Week.SUNDAY;


2. Enum이 제공하는 메소드 values() & valueOf() : 

열거 객체는 열거 상수의 문자열을 내부 데이터로 가지고 있다. 위 사진은 열거 객체가 가지는 데이터 및 메소드들이다.

메소드는 java.lang.Enum 클래스에 선언된 메소드인데, 열거 객체에서 사용할 수 있는 이유는 모든 열거 타입은 컴파일 시에 Enum클래스를 상속하게 되어 있기 때문이다. 

 

  • valueOf() 메소드

valueOf() 메소드는 매개값으로 주어지는 문자열과 동일한 문자열을 가지는 열거 객체를 리턴한다.

이 메소드는 외부로부터 문자열을 입력받아 열거 객체로 변활할 때 유용하게 사용할 수 있다. 

예) Week weekDay = Week.valueOf("SATURDAY");

이 코드에서 weekDay 변수는 Week.SATURDAY 열거 객체를 참조하게 된다. 

 

  • values() 메소드

values() 메소드 열거 타입의 모든 열거 객체들을 배열로 만들어 리턴한다. 

예) Week[] days = Week.values();

       for(Week day : days)  {

           System.out.println(day);

       }

이 코드는 Week 열거 타입의 모든 열거 객체를 배열로 만들어 향상된 for 문을 이용해서 반복하는 코드이다. 


3. java.lang.Enum :

 

Enum 클래스들은 java.lang.Enum에 속해있다. 왜냐하면 조상 클래스가 java.lang.Enum이기 때문이다. 


4. EnumSet :

 

EnumSet은 추상 클래스로 set interface와 enum을 같이 사용하는 것이다. 

EnumSet에는 RegularEnumSet 과 JomboEnumSet이 있다. 아직...사용법을 잘 모르겠다.,,

'Java' 카테고리의 다른 글

Live Study _ 12주차. Annotation  (0) 2021.02.05
Live Study _ 10주차. 멀티쓰레드 프로그래밍  (0) 2021.01.23
Live Study _ 09주차. 예외 처리  (0) 2021.01.16