Недавно мы обновили один из наших классов enum до закрытого класса с объектами в качестве подклассов, чтобы мы могли сделать еще один уровень абстракции для упрощения кода. Однако мы не можем получить все возможные подклассы через функцию Enum.values()
, что плохо, потому что мы в значительной степени полагаемся на эту функциональность. Есть ли способ получить такую информацию с отражением или любым другим инструментом?
PS: добавление их в массив вручную неприемлемо. В настоящее время их 45, и есть планы добавить еще.
Вот как выглядит наш закрытый класс:
sealed class State
object StateA: State()
object StateB: State()
object StateC: State()
....// 42 more
Если есть коллекция значений, она будет в этой форме:
val VALUES = setOf(StateA, StateB, StateC, StateC, StateD, StateE,
StateF, StateG, StateH, StateI, StateJ, StateK, StateL, ......
Естественно, никто не хочет поддерживать такого монстра.