EnumMap
-
아이템 37. ordinal 인덱싱 대신 EnumMap을 사용하라.JAVA/Effective java 2021. 3. 28. 16:12
배열이나 리스트에서 원소를 꺼낼 때 ordinal 메서드로 인덱스를 얻는 코드가 있다. 다음 클래스를 예로 살펴보자. 정원에 심은 식물을 배열 하나로 관리하고, 이들을 생애주기 (한해살이, 여러해살이, 두해살이) 별로 묶어보자. 생애주기별로 총 3개의 집합을 만들고 정원을 한 바퀴 돌며 각 식물을 해당 집합에 넣는다. 이때 집합들을 배열 하나에 넣고 생애주기의 ordinal 값을 그 배열의 인덱스로 사용한 예를 봐보자. 동작은 하지만 문제가 많다. 배열을 제네릭과 호환되지 않으니 비검사 형 변환을 수행해야 하고 깔끔히 컴파일되지 않을 것이다. 배열은 각 인덱스의 의미를 모르니 출력 결과에 직접 레이블을 달아야 한다. 가장 심각한 문제는 정확한 정숫값을 사용한다는 것을 직접 보증해야 한다는 점이다. 정수는..