Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

To alter Enum properties by extracting data class, you can follow these steps:

  1. Create a data class with the properties you want to extract from your Enum:
data class MyDataClass(val value1: String, val value2: Int)
  1. Add a companion object to your Enum and define a function that returns an instance of your data class for each enum value:
enum class MyEnum {
    VALUE1 {
        override fun getDataClass(): MyDataClass {
            return MyDataClass("value1", 1)
        }
    },
    VALUE2 {
        override fun getDataClass(): MyDataClass {
            return MyDataClass("value2", 2)
        }
    };

    abstract fun getDataClass(): MyDataClass
}
  1. Use the getDataClass() function to access the data in your Enum:
val data1 = MyEnum.VALUE1.getDataClass()
val value1 = data1.value1 // "value1"
val value2 = data1.value2 // 1