코딩못하는사람

Java Enum이란? 본문

자바 메모장/개념 및 문법

Java Enum이란?

공부절대안함 2021. 2. 27. 03:19

Enum(열거형) 이란?

서로 연관이 있는 상수들을 묶어 놓은 집합이다.

우리가 자바에서 상수를 정의할 때 final static 을 이용해서 정의하던 문제점들을 보완할 수 있다.

 

Enum의 장점

  • 코드가 단순해지고 가독성이 좋아 구현 의도를 파악하기 쉽다.
  • 인스턴스 생성,상속을 방지하여 상수의 타입안정성이 보장된다.
  • 허용 가능한 값들을 제한할 수 있다.
  • IDE의 적극적인 지원을 받을 수 있다.(자동완성,오타검증,텍스트 리펙토링 등등)
  • 리펙토링시 변경 범위가 최소화된다.(Enum 코드만 고치면 됨)

 

Enum을 사용함으로써 얻는 장점

gender1 = EnumExample.MALE;

gender1 = EnumExample.FEMALE;  를 선언한 부분까지는 문제가 없어보이나

gender1='boy' 라는 값이 실수로 할당되었을 때 유효성을 검사하는 로직이 없다면

컴파일시 오류도 나지 않고  엉뚱한 값을 얻게 된다.

 

하지만 밑에 선언한 enum을 통해 Gender타입으로 선언한 gender2변수에는

'boy'가 할당되지 못해서 컴파일 오류가 발생 된다. 그 이유는

Enum안의 MALE과 FEMALE은 사실 다음과 같이 상수로 정의되어 있기 때문이다.

public static final Gender MALE = new Gender();

public static final Gender FEMALE = new Gender();

 

static을 통해 인스턴스 없이 상수를 사용할 수 있게 MALE과 FEMALE만 정의되어 있으므로

gender2라는 상수타입에 'boy'가 들어오면 컴파일 에러가 난다.

 

Enum 선언

EnumClass는 다른 클래스와 마찬가지로 별도의 java파일, 클래스 안, 클래스 밖 선언 가능하다.

* 특징

- 열거형으로 선언된 순서에 따라 0 부터 인덱스 값을 가진다. 순차적으로 증가된다.

- enum 열거형으로 지정된 상수들은 모두 대문자로 선언

- 마지막에 열거형 변수들을 선언한 후 세미콜론(;)은 찍지 않는다.

  (상수와 연관된 문자를 연결시킬 경우 세미콜론(;) 찍는다.)

 

Enum 메소드

https://limkydev.tistory.com/66?category=957527

 

연관된 값을 출력하는 방법

원하는 Enum 타입 가져오는 방법

*enum형 객체를 만들어서 가져오기. -> Type tp1 = Type.WALKING;

*valueOf() 메소드를 이용해서 가져오기. -> Type tp2 = Type.valueOf("WALKING");

 

 

Enum의 활용 예

woowabros.github.io/tools/2017/07/10/java-enum-uses.html

jojoldu.tistory.com/137

위의 주소를 참고해서 공부하자.

1. 데이터들 간의 연관관계 표현

Table예제 Y("0",true)  N("1",false)

2.상태와 행위를 한곳에서 관리, 타입별 다른 연산식 처리하기

상태를 조회하고 각각 계산하는 식을 Enum을 통해 한번에 처리

3.데이터 그룹 관리

관계를 파악하기가 쉽게함.

그룹별 기능을 추가하기가 쉬워짐

 

 

참고 및 출처

limkydev.tistory.com/를 보고 공부하였습니다.

Comments