У меня есть запрос на получение, который возвращает определенные функции, где 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. Моя цель состоит в том, чтобы в зависимости от значения функции сопоставить хеш-карту с соответствующим объектом 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>