Перечисления в котлине - PullRequest
0 голосов
/ 11 октября 2018

Я хочу получить доступ к keys для item в enum class

enum class Events {
        REFER_AND_EARN {
            val key: String = "Refer and Earn"
            val source: String = "Source"
        },
        REFILL_PAST_MEDICINE_CLICK {
            val key: String = "Refill Past Medicine Click"
            val source: String = "Source"
            val pointOfInitiation: String = "Point of initiation"
        }
    }

Как и выше enum class Могу ли я получить доступ к source как этот ??

Events.REFER_AND_EARN.source

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Вы можете сделать то, что вы хотите достичь, написав это:

enum class Events(val key: String, val source: String, val pointOfInitiation: String? = null) {
    REFER_AND_EARN(key = "Refer and Earn", source = "Source"),
    REFILL_PAST_MEDICINE_CLICK(
        key = "Refill Past Medicine Click",
        source = "Source",
        pointOfInitiation = "Point of initiation"
    )
}
0 голосов
/ 11 октября 2018

Вместо этого вам нужно использовать свойства:

enum class Events(val key: String,
                  val source: String, 
                  val pointOfInitiation: String) {

        REFER_AND_EARN("Refer and Earn",
             "Source",
             "Unknown"),
        REFILL_PAST_MEDICINE_CLICK(
            "Refill Past Medicine Click",
            "Source",
            "Point of initiation"
        );
}

Или вы можете использовать sealed class, как уже упоминалось.

0 голосов
/ 11 октября 2018

Константы перечисления не объявляют новые типы сами.Это означает, что вы не можете просто получить доступ к этим свойствам: они являются общедоступными, но нет доступа к типу, в котором они объявлены.

Вы можете реализовать интерфейс с помощью enum и предоставить эти свойства, переопределив те из интерфейса.

Или вы можете объявить sealed class вместо enum class и использовать объявления объектов вместо констант enum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...