У меня есть требование, когда несколько перечислений должны будут найти значение в i.e Map<Key,Value>
(комбинация перечислений вернет уникальное значение). Я думаю, что есть много вариантов, таких как наличие обертки Object say Key, который будет действовать как ключ. Кроме того, мы можем использовать таблицу Guava, если ключи ограничены двумя (не уверены).Создайте уникальный ключ для Map из нескольких типов Enum
Хотел проверить ниже подход, при котором два перечислений сопоставляются с уникальным вычисленным значением, необходимы предложения для понимания -
я) Если этот подход отлично?
ii) Если да, то он масштабируемый? то есть она может быть легко родовое поддерживать «п» перечислений как в toKey(Enum ...enums)
Ниже фрагмент кода для двух перечислений -
static Integer toKey(Status s, SubStatus ss) {
return Integer.valueOf(s.ordinal() * SubStatus.values().length + ss.ordinal());
}
И
Status { NONE, PASS, WARN, REJECT }
SubStatus { NONE, SOFT_REJECT, HARD_REJECT }
Integer key1 = toKey(Status.REJECT, SubStatus.HARD_REJECT)
Integer key2 = toKey(Status.WARN, SubStatus.NONE)
then key1 != key2
Спасибо!
Вы хотите, чтобы ваш ключ состоял из нескольких значений enum * types * или нескольких значений enum * (одного и того же типа)? – Buurman