JAVA/Effective Java

Enum - 규칙 33 ordinal을 배열 첨자로 사용하는 대신 EnumMap을 이용하라.

반응형


Enum 상수별로 특정정보들을 
저장하고 싶을 때 EnumMap을 사용한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Class Fruit {
  enum Type { APPLE, BANANA, PEAR }
 
  final String name;
  final Type type;
 
  Fruit(String name, Type type) {
   this.name = name;
   this.type = type;
  }
}
 
Map<Fruit.Type, Set<Fruit>> fruitByType = new EnumMap<Fruit.Type, Set<Fruit>>(Herb.Type.class);
for (Fruit.Type t : Fruit.Type.values()) {
  fruitByType.put(t, new HashSet<Fruit>());
}
cs



EnumMap을 사용하면 깔끔하고 안전하며, ordinal을 이용해 구현한 프로그램과 성능면에서 더욱 좋다.

ordinal 값을 배열 첨자로 사용하는 것은 적절치 않기 때문에,
EnumMap을 사용하는 것이 좋다.


출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 규칙33 인용.

반응형