В настоящее время ваш класс DataResponse
представляет две разные вещи.Одно - это сообщение об ошибке, а другое - фактические данные в случае успеха.isSuccess
также является избыточным, потому что это всегда true
, когда данные ненулевые, и всегда false
, если errorMessage не нулевое.
Я бы изменил дизайн следующим образом:
sealed class DataResponse
class SuccessResponse<T>(val data: T?)
class ErrorResponse(val errorMessage: String)
Теперь у вас есть два отдельных класса, каждый из которых имеет один и тот же супертип DataResponse
.Таким образом, вы всегда будете знать, с чем имеете дело.
Использование:
when(dataResponse) {
is SuccessResponse -> TODO("deal with data")
is ErrorResponse -> TODO("deal with error")
}