Могу ли я создать обобщенный тип c в классе данных kotlin? - PullRequest
1 голос
/ 02 марта 2020

У меня есть бэкэнд, который всегда будет возвращать либо «успех» с некоторыми данными, так как в поле json будет указано имя успеха и в нем будут данные. Или он вернет объект ошибки в формате json. Поэтому я хотел бы иметь какой-то BaseResponse, поэтому, когда я его использую, я мог бы сделать что-то вроде BaseResponse, чтобы успех был отображен как объект Person.

Так что я думал о том, чтобы сделать так:

@Parcelize
data class BaseResponse<T>(
     val success: T? = null
) : Parcelable

Но в нем говорится, что Type напрямую не поддерживается в Parcelize. Есть ли способ, которым я могу сделать это вообще? Или мне нужно написать что-нибудь кастомное? Вызовы et c вызываются с использованием Retrofit и Gson в качестве сериализатора.

1 Ответ

5 голосов
/ 02 марта 2020

Вы можете сделать это, потребовав T быть реализацией Parcelable, например:

@Parcelize
data class BaseResponse<T: Parcelable>(val success: T? = null) : Parcelable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...