Противоречивое объявление 'name' в enum

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

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

К сожалению, это не похоже на работу в Котлине. Компиляция завершается с сообщением:

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

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

1 ответ

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

enum class DeviceFieldQuery(val clazz: Class<*>) {
    Id(Int::class.java),
    Name(String::class.java),
}
Другие вопросы по тегам