我有一个get请求,它返回某些特性,其中对象的11个属性是公共的。由于Kotlin中的数据类不能从其他类继承,我决定用下面的接口定义公共属性。
interface AccountFeature {
val feature: String?
val status: String?
val id: String?
val urlLogo: String?
val minAppVersion: String?
val target: String?
val title: String?
val backgroundColor: String?
val bodyTextColor: String?
val bodyText: String?
val titleTextColor: String?
}
其中一个数据类如下所示。
data class AccountFeatureHelp(val privacyStatement: String? = null,
val supportFAQ: String? = null,
val termsOfService: String? = null,
val supportHotline: String? = null,
val supportEmail: String? = null,
override val feature: String?,
override val status: String?,
override val id: String?,
override val urlLogo: String?,
override val minAppVersion: String?,
override val target: String?,
override val title: String?,
override val backgroundColor: String?,
override val bodyTextColor: String?,
override val bodyText: String?,
override val titleTextColor: String?): AccountFeature
到目前为止一切都很好。
在我的请求的接口定义中,我期望一个AccountFeature的可观察数组。我的目标是根据特性值,将hashmap映射到相应的feature对象。
interface AccountFeaturesAPIService {
@GET("accounts/{id}/features")
fun getAccountFeature(@Path("id") id: String): Observable<Array<AccountFeature>>
}
我得到以下运行时异常。
java.lang.RuntimeException: Unable to invoke no-args constructor for interface com.thinxnet.native_tanktaler_android.core.model.account.feature.AccountFeature. Registering an InstanceCreator with Gson for this type may fix this problem.
除了将Observable>改为Observable>之外,我如何优雅地克服这一点;