Возможна продажа с наследованием в свойствах базового класса Kotlin. - PullRequest
0 голосов
/ 31 января 2019

У меня есть родительский класс в Kotlin как этот

open class Parent(
var name: String,
var dose: JsonElement?,
val other: String?) {
constructor(name: String, dose: JsonElement?)
    : this(
    name = name.toLowerCase(),
    dose = dose, 
    other = null
)
}

И его дочерний класс как этот

class Child(
val type: String,
name: String,
dose: JsonElement?
 ) : Parent(name, dose), Parcelable {

constructor(parcel: Parcel) : this(
    parcel.readString() ?: "",
    parcel.readString() ?: "",
    Gson().fromJson(parcel.readString(), JsonElement::class.java))

override fun writeToParcel(parcel: Parcel, flags: Int) {
    parcel.writeString(type)
    parcel.writeString(name)
    parcel.writeString(Gson().toJson(dose))
}

override fun describeContents(): Int {
    return 0
}

companion object CREATOR : Parcelable.Creator<Child> {

    override fun createFromParcel(parcel: Parcel): Child {
        return Child(parcel)
    }

    override fun newArray(size: Int): Array<Child?> {
        return arrayOfNulls(size)
    }
}
}

Моя проблема здесь, когда я передаю объект дочернего класса какраспространяются только свойства дочернего класса.Все свойства базового класса, такие как name и dose, становятся нулевыми после десериализации объекта.

У меня есть перекрестная проверка порядка чтения и записи, а также проверка правильности записи значений во время сериализации.Дайте мне знать, если мне потребуется дополнительная информация.

...