Hyeok의 웹 개발 블로그

<2025.03.12> ENUM, 동등성과 동일성 본문

TIL/Java

<2025.03.12> ENUM, 동등성과 동일성

Yhyeok 2025. 3. 12. 22:19

ENUM 

- ENUM은 서로 연관된 상수들의 집합을 정의하는 특별한 데이터 타입

- 기존의 final static 상수를 사용하는 것보다 더 안전하고 가독성이 좋은 방법


ENUM 의 특징

- ENUM은 상수들의 집합

- ENUM은 내부적으로 final class 처럼 동작

- ENUM은 객체처럼 필드와 메서드를 가진다.

- ENUM은 특정 상태를 표현하는 데 유용하다.

 

이렇게 정의된 Day ENUM은 요일을 표현하는 상수 그룹이다.

 

ENUM도 객체

- 각 ENUM 값은 인스턴스

- ENUM 값마다 필드, 생성자, 매서드를 가질 수 있다.

- ENUM은 new 키워드로 생성할 수 없지만, 내부적으로 자동으로 생성되는 객체

 

 

- 여기서 CoffeSize.LARGE는 단순한 문자열이 아니라 객체 

- LARGE.getM1() 처럼 ENUM 값에 메서드를 호출 할 수 있다.

- ENUM을 사용하면 final static int 보다 더 객체지향적인 방식으로 코드를 작성할 수 있다.

 

 

ENUM은 다양한 관점의 상수

 

 

  ● ENUM을 단순한 상수로 사용하기

 

  ● ENUM에  값을 추가하여 의미 부여하기

 

  ● ENUM을 상태값으로 사용하기

 

- ENUM을 활용하면 특정한 상태를 명확하게 표현 가능

- OrderStatus를 사용하면  String을 비교하는 것보다 타입 안정성이 보장

 

ENUM과 메서드 

 

  - EUNM은 단순한 상수의 모음이 아니라, 객체처럼 동작하는 클래스 (메서드를 가질 수 있음)

 

 

 

  - ENUM 값마다 서로 다른 종작을 정의 할 수 있다.

  - abstract 메서드를 선언하여 각 ENUM값이 구현하도록 만들 수 있다.

 

 

ENUM과 인터페이스

 

  - ENUM은 인터페이스도 구현 가능하다.

 

  - ENUM이 인터페이스를 구현하면 다형성을 활용가능

  - ENUM을 인터페이스 기반으로 설계하면 유지보수가 쉬워진다.


 

▶ 동등성

 

  - "내용"이 같은 것이 동등성이다.

 

 

▶ 동일성

 

  - "메모리 주소" 가 같은 것이 동일성이다.