티스토리 뷰
1. 열거형이란?
자바에서 상수를 표현할때 사용하는 방식이다.
enum을 사용하면 상수라는 것을 명확히 표현할 수 있고 코드의 가독성이 증가 한다.
자신만의 네임스페이스를 갖고 있으며 형 안정성을 보장 해준다.
또한, 원시 데이터 타입인 int와 char과 같이 switch 문에서 사용이 가능 하다.
열거형의 장점
1. 열거형를 비교할 때 실제 값뿐만 아니라 타입까지도 체크합니다.
2. 열거형의 상숫값이 재정의되더라도 다시 컴파일할 필요가 없습니다.
enum 열거형이름 { 상수명1, 상수명2, ... }
열거형에 정의된 상수를 사용하는 방법은 '열거형이름.상수명' 이다. (클래스의 static 변수를 참조하는 방법과 동일하다.)
열거형 상수간의 비교에는 '=='를 사용할 수 있다. equals()가 아닌 '=='로 비교가 가능하다는 것은 그만큼 빠른 성능을 제공한다는 얘기이다.
하지만 '<', '>'와 같은 비교연산자는 사용할 수 없고 compareTo()는 사용가능하다.
모든 열거형의 조상은 'java.lang.Enum' 클래스 이다.
2. 열거형에 멤버추가하기
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
위와 같이 정의된 열거체의 첫 번째 상숫값은 0부터 설정되며, 그다음은 바로 앞의 상숫값보다 1만큼 증가되며 설정된다.
enum Rainbow {
RED("red"), ORANGE("orange"), YELLOW("yellow"), GREEN("green"), BLUE("blue"), INDIGO("indigo"),
VIOLET("violet");
private final int value;
Rainbow(int value) { this.value = value; }
public int getValue() { return value; }
}
또한, 불규칙한 값을 상숫값으로 설정하고 싶으면 상수의 이름 옆에 괄호(())을 추가하고, 그 안에 원하는 상숫값을 명시할 수 있다.
하지만 이때에는 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 위의 예제와 같이 별도로 추가해야만 한다.
열거형의 생성자는 제어자가 묵시적으로 private 이다.
(즉, 외부에서 new 연산자를 통해 객체를 생성할 수 없다.)
필요하다면, 하나의 열거형 상수에 여러 값을 지정할 수도 있다. 다만 그에 맞게 인스턴스 변수와 생성자 등을 새로 추가해주어야 한다.
enum Direction {
EAST(1, ">"), SOUTH(2, "V"), WEST(3, "<"), NORTH(4, "^");
private final int value;
private final String symbol;
Direction(int value, String symbol) { // 접근제어자 private 생략
this.value = value;
this.symbol = symbol;
}
}
열거형에 추상메서드 추가하기
열거형에 추상메서드를 선언하면 각 열거형 상수가 해당 추상 메서드를 반드시 구현해야 한다.
대표적인 Enum 클래스의 메서드
참고자료
남궁 성 지음, 자바의 정석, 도우출판
'프로그래밍 언어 > Java' 카테고리의 다른 글
스트림 API (0) | 2019.06.24 |
---|---|
람다식(Lambda expression) (0) | 2019.06.23 |
제네릭스 (0) | 2019.06.20 |
컬렉션 프레임워크 (0) | 2019.06.18 |
java.lang 패키지 (0) | 2019.06.17 |
- Total
- Today
- Yesterday
- 스프링부트
- 그래프 순회 알고리즘
- 유효성검사
- git
- 제네릭 메서드
- 상속
- 스프링
- 회원가입
- AJAX
- 객체
- http
- 메서드 참조
- jvm
- 람다식
- 포워드 프록시
- JVM 메모리 구조
- 멀티 프로세스
- 스프링 부트 시큐리티
- 리버스 프록시
- 가상 회선 방식
- github
- 클래스
- stateless
- 전자정부프레임워크
- Servlet
- 싱글톤 레지스트리
- 웹 서버
- connectionless
- 인텔리제이
- 자바의 정석
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |