Я понимаю (прочитав также другие посты на SO), что это плохой дизайн (или лучше сказать, что в моем случае это также не имеет смысла) добавлять состояние в константы перечисления.
Тем не менее я нахожуЯ прямо сейчас в ситуации, когда мне нужно что-то похожее на это.Приложение, которое я пишу, использует константы ошибок (enum), которые я использую для обозначения ошибок, добавляя их к Map<Error, ErrorInfo>
(обратите внимание, что это не ошибки приложения, а «Ошибки», которые являются частью приложения).Хорошо - теперь я понимаю, что мне действительно нужно указать ErrorLevel INFO, WARN, FATAL для них.Поскольку ErrorLevel ошибки зависит от контекста, в котором она произошла, я не могу статически назначить ErrorLevel-значениям Error-enums, другими словами, Error.E1
может иметь значение ErrorLevel.WARN
один раз, но может быть ErrorLevel.FATAL
другое время.
Я думаю о том, как лучше всего включить это ErrorLevel
в свой дизайн, но все, что я до сих пор придумывал, - это ввести новый класс, который просто оборачивает Error
иErrorLevel
и используйте его в Map
вместо Error
.
Поскольку ошибки и их серьезность кажутся мне чем-то довольно распространенным, я уверен, что есть более разумный способ сделать это,поэтому я был бы очень признателен за ваши идеи о том, как спроектировать это лучше.
- qu