Противоречивая декларация name в enum - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть простой класс enum, в котором я хотел бы иметь поле с именем name .

enum class DeviceFieldQuery(val clazz: Class<*>) {
    id(Int::class.java),
    name(String::class.java),
}

К сожалению, это не работает в Kotlin.Сбой компиляции с сообщением:

Ошибка: (9, 5) Kotlin: Конфликтующие объявления: имя записи enum, общедоступное конечное имя val: String

Тот же класс Enumкак код Java работает нормально.Как я могу решить это в Kotlin?

1 Ответ

0 голосов
/ 28 сентября 2018

Перечисления в Kotlin уже имеют свойство name, уже определенное (как Java).Это противоречит вашему перечислению под названием name.Чтобы исправить это, вы можете использовать заглавные буквы, что более идиоматично:

enum class DeviceFieldQuery(val clazz: Class<*>) {
    Id(Int::class.java),
    Name(String::class.java),
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...