Android Kotlin Cannot serialize class

Viewed 24

I apologize in advance if I wrote my question wrong. I need the following class (AddressPointMo) to be serializable because I am sending this object using the HttpTransportSE :: call method. I have searched many reports and cannot find a solution.

After executing HttpTransportSE :: call, it gets Cannot serialize: com.xxx.ksavi.android.model.AddressPointMo@f0678a47

open class AddressPointMo :Serializable, MobileTransferObject() {

    @PrimaryKey
    @NonNull
    @ColumnInfo
    var id: Long? = null
        set(id) {
            moVerifyChanged(this.id, id)
            field = id
        }

    @ColumnInfo
    var cityName: String? = null
        set(cityName) {
            moVerifyChanged(this.cityName, cityName)
            field = cityName
        }

    @ColumnInfo
    var streetName: String? = null
        set(streetName) {
            moVerifyChanged(this.streetName, streetName)
            field = streetName
        }

    @ColumnInfo
    var houseNumber: String? = null
        set(houseNumber) {
            moVerifyChanged(this.houseNumber, houseNumber)
            field = houseNumber
        }

    @ColumnInfo
    var postalCode: String? = null
        set(postalCode) {
            moVerifyChanged(this.postalCode, postalCode)
            field = postalCode
        }

    @ColumnInfo
    var commonName: String? = null
        set(commonName) {
            moVerifyChanged(this.commonName, commonName)
            field = commonName
        }

    @ColumnInfo
    var addressUnitCount: Long? = null
        set(addressUnitCount) {
            moVerifyChanged(this.addressUnitCount, addressUnitCount)
            field = addressUnitCount
        }

    @TypeConverters(DatabaseConverter::class)
    @ColumnInfo
    @Contextual
    var location: LocationMo? = null
        set(location) {
            moVerifyChanged(this.location, location)
            field = location
        }

    @TypeConverters(DatabaseConverter::class)
    @ColumnInfo
    var addressUnitsPopulated: Boolean = false
        set(addressUnitsPopulated) {
            moVerifyChanged(this.addressUnitsPopulated, addressUnitsPopulated)
            field = addressUnitsPopulated
        }

    @TypeConverters(DatabaseConverter::class)
    @ColumnInfo
    var addressUnits: AddressUnitMoList? = null
        set(addressUnits) {
            moVerifyChanged(this.addressUnits, addressUnits)
            field = addressUnits
        }

    @ColumnInfo
    var sequenceNumber: Int? = null;

    override fun moIsChanged(): Boolean {
        return super.moIsChanged() || location?.moIsChanged() ?: false || (addressUnits?.list?.any { it.moIsChanged() }) ?: false
    }

    override fun hashCode(): Int {
        val prime = 31
        var result = super.hashCode()
        result = prime * result + if (id == null) 0 else id!!.hashCode()
        result = prime * result + if (cityName == null) 0 else cityName!!.hashCode()
        result = prime * result + if (streetName == null) 0 else streetName!!.hashCode()
        result = prime * result + if (houseNumber == null) 0 else houseNumber!!.hashCode()
        result = prime * result + if (postalCode == null) 0 else postalCode!!.hashCode()
        result = prime * result + if (commonName == null) 0 else commonName!!.hashCode()
        result = prime * result + (location?.hashCode() ?: 0)
        result = prime * result + (addressUnitsPopulated?.hashCode() ?: 0)
        result = prime * result + (addressUnits?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: Any?): Boolean {
        if (this === other) {
            return true
        }
        if (other == null) {
            return false
        }
        if (other !is AddressPointMo) {
            return false
        }
        val obj = other as AddressPointMo?
        if (id != obj?.id) {
            return false
        }
        if (cityName != obj?.cityName) {
            return false
        }
        if (streetName != obj?.streetName) {
            return false
        }
        if (houseNumber != obj?.houseNumber) {
            return false
        }
        if (postalCode != obj?.postalCode) {
            return false
        }
        if (commonName != obj?.commonName) {
            return false
        }
        if (location != obj?.location) {
            return false
        }
        if (addressUnits != obj?.addressUnits) {
            return false
        }
        if (addressUnitsPopulated != obj?.addressUnitsPopulated) {
            return false
        }
        return true
    }
}```
0 Answers
Related