[ITWILL : JAVA]기본클래스 이외에 자바 구성요소2 : enum
💡 핵심 요약 (TL;DR)
기본클래스 이외에 자바 구성요소2 : enum의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다. * 데이터가 몇 가지 한정된 상수값으로 구성될때 주로 사용.
ITWILL학원 : 18강 JAVA BY 윤미영강사
1. enum(이넘)의 정의
- enum은 열거형 데이터 타입이라고 한다.
- 데이터가 몇 가지 한정된 상수값으로 구성될때 주로 사용.
- ex) 계절을 나타낼때 String타입보다 enum을 생성하여 봅, 여름, 가을, 겨울의 딱 4개의 값만 설정하는 것이다.
2. enum 사용법
- 키워드 class대신 enum사용,
- enum내부에는 상수값 나열 -> 이 상수값들을 enum상수라고 부름
- 대소문자 구분함
1 | enum Season{ |
- 선언위치에 따른 변화
- 같은 클래스 내부에서 enum사용시 (innerEnum) : Season.SPRING
- 외부 클래스에서 enum사용시 (OuterEnum) : 해당클래스명.Season.SPRING
3. 일반 클래스와 enum 차이점
- 접근제어자 : public, default만 사용가능
- 내부적으로 java.lang.Enum클래스 상속 -> 따라서 별도로 다른 클래스 상속받을 수 없다.
- 여러 인터페이스를 구현하는 것은 상관없다.
- enum을 이용하면 비교할때 단순히 값만을 비교하는 것이 아니라 타입까지 비교한다. => 안정적인 프로그래밍가능
4. enum메서드
enum타입들은 java.lang.Enum 클래스를 기본적으로 상속받고 있기 때문에 java.lang.Enum 클래스에 선언된 메서드들을 사용가능하다.
| 메서드명 | 선언부 | 설명 |
|---|---|---|
| name() | public final String name() | enum상수의 이름을 문자열로 리턴한다 |
| ordinal() | public final int ordinal() | 0부터 시작하는 enum 상수의 순서를 리턴한다 |
| comparedTo() | public final int com[aredTo(E o) | enum상수의 ordinal 차이를 리턴한다 |
| values() | public static T[] values() | enum타입에 선언된 enum상수를 배열로 리턴한다 |
| valueOf() | public static T<extends Enum |
문자열로 매핑된 enum상수 객체를 리턴한다 |
5. enum상수를 이용한 연산
- enum상수는 주로 비교연산에서 사용된다.
enum을 사용하여 계절별로 다른 출력값을 나타내는 코드를 작성해보자.
- OuterEnum사용
- 첫번째방법 : if조건문 + comparedTo()
- 두번째방법 : switch
1 | enum Season{ |
6. enum에 멤버 추가 가능
- enum에도 사용자가 원하는 멤버변수와 멤버메서드를 추가할 수 있다
- 주의점 : enum상수들만을 정의할때는 세미콜론이 필료없지만 별도의 멤버를 추가하는 경우에는 세미콜론을 추가해서 상수 선언이 끝나는 것을 표시해줘야한다.
7. enum에 생성자 추가 가능
- enum의 생성자의 접근 제어자 : private만 가능하고 생략가능.
- 외부에서 해당 생성자를 호출할 수는 없으며 내부에서 상수를 정의하면서 파라미터로 전달.
[ITWILL : JAVA]기본클래스 이외에 자바 구성요소2 : enum