I want to define an enum that values are not ordinal, for example:
enum class States(value: Int) { STATE_A(4), STATE_B(5), STATE_C(7), STATE_D(12) }
How can I get the value of each item? For instance States.STATE_C should return 7.
Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero).
To get an enum constant by its string value, you can use the function valueOf() on the Enum class. It helps us to get enum from a String value in Kotlin.
You should define value
as property (val
) not as constructor parameter. After that it becomes accessible:
enum class States(val value: Int) { STATE_A(1), STATE_B(2), STATE_C(3), STATE_D(4) } ... println(States.STATE_C.value) // prints 3
Also consider to use ordinal
, which may be suitable in your case:
enum class States { STATE_A, STATE_B, STATE_C, STATE_D } ... println(States.STATE_C.ordinal + 1) // prints 3
If you go with that approach, be careful - any change of States
order can break your code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With