Enumish

interface Enumish

Base type of the kinds generated for @Enumize hierarchies.

For each hierarchy the plugin generates a nested sealed interface Enumish extending this interface. Its values — one singleton per leaf, called kinds — play the role of enum constants: the kind of a leaf object is the object itself, and the kind of a leaf class is its companion object.

Properties

Link copied to clipboard

The companion object of the generated Enumish type this kind belongs to — the reflection-free way from a kind to the hierarchy-wide operations (EnumishCompanion.entries / EnumishCompanion.valueOf); the counterpart of Enum.getDeclaringClass. Generated types covariantly narrow this to their concrete companion type.

Link copied to clipboard
abstract val enumizedClass: KClass<out Enumized<*>>

The class literal of the leaf this kind corresponds to — the bridge to reflection-based libraries (kotlin-reflect, serialization, DI). For a non-final leaf this is the leaf class itself, which may differ from a value's runtime class.

Link copied to clipboard
abstract val label: String

The label of this kind — the counterpart of Enum.name.