Рассмотрим сценарий, в котором вы определяете вес для каждого объекта формы, например:
public enum SHAPE {
TRIANGLE, RECTANGLE, SQUARE, HEXAGON;
}
И давайте предположим, что создание объектов для всех этих форм всегда огромно. Скажем, он входит в БД и извлекает некоторые данные, скажем, в конструкторе. Что ты делаешь?
Вы сохраняете его на карте, используя ключ и значение перечисления как один временной объект, а затем, используя перечисление, вы говорите, попробуйте и вызовите что-то вроде:
public double calculateArea(SHAPE shape) {
Figure figure = map.get(shape);//you dont create object but take it from a map
return figure.calculate();
}
Для EnumSet предположим, что у вас есть перечисление с основными цветами, такими как:
enum COLORS {
RED, BLUE, GREEN
}
Теперь, если я хочу создать, скажем, ЖЕЛТЫЙ цвет и узнать ИНГРЕДИЕНТЫ для него, я мог бы использовать EnumSet с двумя цветами, такими как ЗЕЛЕНЫЙ и КРАСНЫЙ. Точно так же я мог бы хранить несколько наборов с вариациями в соответствии с моими требованиями к цвету.
Это просто для примера, но вы можете даже добавить счетчик, чтобы было сложнее сказать, сколько вариаций КРАСНЫХ, СИНИХ и ЗЕЛЕНЫХ пикселей вам нужно.
person
SMA
schedule
31.12.2014
EnumSet
(намного лучше для чтения, чем, например, использованиеint
s и битовой магии). Если вы хотите присвоить значения или значения по умолчанию/функции значениям перечисления, вам понадобитсяEnumMap
. - person Gábor Bakos   schedule 31.12.2014EnumSet
s или добавлять к ним новые значения, чтобы они не были константами. Точно так же вы можете присвоить новые значения существующим ключам дляEnumMap
s или добавить, удалить пары ключ/значение. - person Gábor Bakos   schedule 31.12.2014