如何避免重复覆盖 kotlin 中的字段

How to avoid of duplication overriding fields in kotlin

继承对象创建新字段而不是 Override

假设 CredentialMessageMessage

延伸
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")

当我打印消息标签而不是 "Barev" 时,我得到了 "Barev"

println(message.label) // "Barev"

调试显示有两个标签。 第一个是label,第二个是Message.label

并且无法访问 Message.label

反编译现有源代码后,我找到了答案。 override 关键字生成完全相同的字段。删除 override 关键字后问题解决了。

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