[英]Unable to create converter for class…, Retrofit2, Realm4 and GSON
[英]Kotlin field overriding and GSON deserialization Unable to create converter class exception
我在Kotlin
這樣的家長班
open class Prescription(
open var name: String,
open val id: String,
open var dose: JsonElement?,
open var schedule: JsonElement?,
open var notes: String?,
@SerializedName("as_needed")
open var isAsNeeded: Boolean,
open var archiveDate: Long?) {
constructor(name: String, dose: JsonElement?, schedule: JsonElement?, isAsNeeded: Boolean, notes: String?)
: this(
id = name.toLowerCase() + "-" + UUID.randomUUID().toString().subSequence(0, 6),
name = name,
dose = dose,
schedule = schedule,
isAsNeeded = isAsNeeded,
archiveDate = null,
notes = notes
)
}
像這樣的孩子班
class Medication(
override var name: String,
override var dose: JsonElement?,
override var schedule: JsonElement?,
override var isAsNeeded: Boolean,
override var notes: String?,
override var id: String,
val other: String?,
) : Topic, Prescription(
name = name,
dose = dose,
schedule = schedule,
isAsNeeded = isAsNeeded,
notes = notes
)
當我嘗試使用GSON
反序列化Medication
類時,我得到了IllegalArgumentException
說Medication
類declares multiple JSON fields named dose.
我不確定將override
添加到字段時字段如何重復。 在Kotlin
+ GSON
中這樣做的正確方法是什么
class Medication(
name: String,
dose: JsonElement?,
schedule: JsonElement?,
isAsNeeded: Boolean,
notes: String?,
id: String,
val other: String?,
) : Topic, Prescription(
name,
dose,
schedule,
isAsNeeded,
notes
)
嘗試以上操作...在Medication
類中,無需覆蓋變量。
作為名稱,劑量,時間表,isAsNeeded,注釋已在超類中聲明,因此無需覆蓋即可直接使用它們。
open class Prescription(
protected var name: String,
protected val id: String,
protected var dose: JsonElement?,
protected var schedule: JsonElement?,
protected var notes: String?,
@SerializedName("as_needed")
protected var isAsNeeded: Boolean,
protected var archiveDate: Long?) {
constructor(name: String, dose: JsonElement?, schedule: JsonElement?, isAsNeeded: Boolean, notes: String?)
: this(
id = name.toLowerCase() + "-" + UUID.randomUUID().toString().subSequence(0, 6),
name = name,
dose = dose,
schedule = schedule,
isAsNeeded = isAsNeeded,
archiveDate = null,
notes = notes
)
}
而且我相信在您的超類中保護您的var / val更可取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.