간펴니
간편 자바프로그래밍
간펴니
전체 방문자
오늘
어제
  • 전체보기 (185)
    • 알고리즘 (2)
    • JAVA (69)
      • 이펙티브 자바 (47)
      • JAVA 병렬프로그래밍 (5)
      • 자바 (17)
    • SPRING (60)
      • Spring (12)
      • IceWater Community (37)
      • Homme Shop (10)
      • 토비의 스프링 (1)
    • SPRING BOOT (4)
      • WhiteRecord (7)
    • 오류 (9)
    • DB (10)
      • ORACLE (5)
      • MYSQL (1)
      • MYBATIS (4)
      • JPA (0)
      • 대용량 데이터 베이스 (0)
      • SQL (0)
    • FRONT (8)
      • JSP (2)
      • JavaScript (2)
      • Jquery (3)
      • Thymeleaf (1)
    • AWS (6)
    • JNI (10)
    • 회고 (0)
    • MQ (0)
    • Radis (0)
    • Git (0)
    • Docker (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 컨셉 변경

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
간펴니

간편 자바프로그래밍

JAVA/이펙티브 자바

35. ordinal 메서드 대신 인스턴스 필드를 사용하라

2023. 7. 18. 20:52
728x90

대부분의 열거 타입 상수는 자연스럽게 하나의 정숫값에 대응된다.

 

모든 열거 타입은 해당 상수가 그 열거 타입에서 몇 번째 위치인지 반환하는 ordinal이라는 메서드를 제공한다.

 

이런 이유로 열거 타입 상수와 연결된 정수값이 필요할 때 ordinal 메서드를 이용하고 싶은 유혹에 빠진다.

 

그러나 해당 메서드를 사용하면 유지보수가 끔찍해질 수 있다.

 

구현에 따라 코드가 오동작 할 수 있고, 값을 추가하거나 제거하기가 힘들어질 수 있다.

 

또한 중간에 값을 비워둘 수 없게되고 때문에 더미 상수를 추가해야 하는 상황이 올 수 있다.

 

해답은 간단하다. ordinal 메서드를 사용하지 말고 인스턴스 필드에 int 필드를 추가 후 저장하여 사용하면 된다.

 

public enum Ensemble {
    SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5),
    SEXTET(6), SEPTET(7), OCTET(8), DOUBLE_QUARTET(8),
    NONET(9), DECTET(10), TRIPLE_QUARTET(12);

    private final int numberOfMusicians;
    Ensemble(int size) { this.numberOfMusicians = size; }
    public int numberOfMusicians() { return numberOfMusicians; }
}

 

ordinal 메서드를 절대 사용하지 말자.

728x90
저작자표시 (새창열림)

'JAVA > 이펙티브 자바' 카테고리의 다른 글

38. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라  (0) 2023.07.20
37. ordinal 인덱싱 대신 EnumMap을 사용하라  (0) 2023.07.18
34. int 상수 대신 열거 타입을 사용하라  (0) 2023.07.18
33. 타입 안정 이종 컨테이너를 고려하라  (0) 2023.07.16
32. 제네릭과 가변인수를 함께 쓸 때는 신중하라  (0) 2023.07.16
    'JAVA/이펙티브 자바' 카테고리의 다른 글
    • 38. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라
    • 37. ordinal 인덱싱 대신 EnumMap을 사용하라
    • 34. int 상수 대신 열거 타입을 사용하라
    • 33. 타입 안정 이종 컨테이너를 고려하라
    간펴니
    간펴니
    개발공부 기록하는 곳

    티스토리툴바