Разрешение ошибок случайного перекрытия в Котлине

Я недавно начал истекать с Kotlin и начал проект Spring Boot pet с использованием Kotlin.

Я пытаюсь интегрировать пользовательский объект домена пользователя в Spring Security и, следовательно, хочу реализовать интерфейс UserDetails .

С учетом объекта моего домена User ниже:

import org.springframework.data.annotation.Id as DocumentId import org.springframework.data.mongodb.core.mapping.Document import org.springframework.security.core.GrantedAuthority import org.springframework.security.core.authority.AuthorityUtils import org.springframework.security.core.userdetails.UserDetails @Document data class User(@DocumentId val id: String? = null, val username: String = "", val password: String = "", val email: String = "", val name: String? = null, val surname: String? = null) : UserDetails { override fun isCredentialsNonExpired(): Boolean = true override fun isAccountNonExpired(): Boolean = true override fun isAccountNonLocked(): Boolean = true override fun getAuthorities(): MutableCollection<out GrantedAuthority> = AuthorityUtils.createAuthorityList("USER") override fun isEnabled(): Boolean = true } 

Я получаю следующие ошибки:

  1. Случайное переопределение: следующие объявления имеют одну и ту же подпись JVM (getUsername () Ljava / lang / String;): public final fun <get-username> (): Kotlin.String, public abstract fun getUsername (): Kotlin.String!

  2. Случайное переопределение: следующие объявления имеют одну и ту же подпись JVM (getPassword () Ljava / lang / String;): public final fun <get-password> (): Kotlin.String, public abstract fun getPassword (): Kotlin.String!

Поскольку у моего класса User уже есть метод getUsername (): Kotlin.String также реализует метод getUsername (): Kotlin.String! ?

Как я могу разрешить такую ​​ошибку, кроме использования @JvmName в getter и setter свойства?

    Проблема здесь в том, что свойство getter не может переопределить функцию из супертипа, с точки зрения Котлина. Чтобы обойти это, вы можете запретить компилятору генерировать геттеры, сделав ваши свойства private и внедрить требуемые методы из супертипов вручную, например:

     data class User( private val username: String = "" ... ): UserDetails { override fun getUsername() = username ... } 
    Intereting Posts
    Коммуникация Kotlin приближается из-за нулей при использовании Мутатная строка из расширения Kotlin: Как получить и установить текст в TextView на Android с помощью Kotlin? Что не так с использованием инсталляции setter для Android ViewModel против внедрения и ввода ViewModel.Factory? Onclick не отвечает с помощью kotlin в андроид-студии Запуск приложения TornadoFX из существующей программы Kotlin Как упаковать родную библиотеку kotlin, чтобы ее можно было использовать в проектах Android и iOS? Android Studio 3 версия Kotlin Как изменить префикс последовательности Kotlin, но сохранить хвост? Компонент Dagger 2 с модулями с разной степенью охвата Момент не может быть сериализован в соответствующий формат даже с помощью jackson-datatype-jsr310 Kotlin конвертирует TimeStamp в DateTime Kapt + LoganSquare не работает должным образом при сопоставлении Почему я не вижу компонент вспомогательного объекта расширенного класса? Как получить данные из базы данных Firebase с помощью Kotlin?