私はEnumMap
オーバーを使用することの長所と短所を比較検討しようとしていHashMap
ます。私はいつもを使って調べているので、キー付きのaが正しい選択String
だと思われます。ただし、キーを特定の列挙に制限するという私の意図を伝えるため、より良い設計のように思えます。考え?HashMap
String
EnumMap
これは、私がどのように使用するかを示す、作り話の例ですMap
:
enum AnimalType { CAT, DOG }
interface Animal {}
class Cat implements Animal {}
class Dog implements Animal {}
public class AnimalFactory {
private static final Map<AnimalType, Animal> enumMap
= new EnumMap<AnimalType, Animal>(AnimalType.class);
// versus
private static final Map<String, Animal> stringMap
= new HashMap<String, Animal>();
static {
enumMap.put(AnimalType.CAT, new Cat());
enumMap.put(AnimalType.DOG, new Dog());
stringMap.put("CAT", new Cat());
stringMap.put("DOG", new Dog());
}
public static Animal create(String type) {
Animal result = enumMap.get(AnimalType.valueOf(type));
Animal result2 = stringMap.get(type);
return result;
}
}
AnimalType
列挙型とマップは、AnimalFactory
動物を作成するためにのみ使用され、他の場所では使用されないと仮定します。
どちらMap
を使うべきですか?