Как избежать дублирования переопределяющих полей в kotlin - PullRequest
1 голос
/ 29 января 2020

Унаследованный объект создает новое поле вместо Override it.

Скажем CredentialMessage расширяется от Message

open class Message(
        @SerializedName("l") open val label: String
){
        override fun toString(): String {
                return label
        }
}

class CredentialMessage(
    @Transient override val label: String,
    @SerializedName("u") open val userName: String,
    @SerializedName("p") open val password: String
): Message("\uD83D\uDD12" + label) //?

Простой пример CredentialMessage выглядит следующим образом

val message = CredentialMessage("Barev","user","pass")

при печати этикетки сообщения вместо "areBarev" у меня есть "Barev"

println(message.label) // "Barev"

Отладка показывает, что есть две метки. Первый - label, а второй - Message.label

enter image description here

И нет никакого доступа к Message.label

1 Ответ

0 голосов
/ 29 января 2020

После декомпиляции существующего исходного кода я нашел ответ. override ключевое слово генерирует точно такое же поле. После удаления ключевого слова override проблема решена.

class CredentialMessage(
    label: String,
    @SerializedName("u") open val userName: String,
    @SerializedName("p") open val password: String
): Message("\uD83D\uDD12" + label) //?
...