반응형
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 인용.
반응형
'JAVA > Effective Java' 카테고리의 다른 글
Enum - 규칙 35 작명 패턴 대신 어노테이션을 사용하라. (0) | 2018.05.29 |
---|---|
Enum - 규칙 34 확장 가능한 enum을 만들어야 한다면 인터페이스를 이용하라. (0) | 2018.05.29 |
Enum - 규칙 32 비트 필드(bit field) 대신 EnumSet을 사용하라. (0) | 2018.05.29 |
Enum - 규칙 31 ordinal 대신 객체 필드를 사용하라. (0) | 2018.05.29 |
Enum - 규칙 30 int 상수 대신 enum을 사용하라. (0) | 2018.05.29 |