Я использую функцию расширения для расширения retrofit2.Response
объекта:
Отрывок:
public class ErrorResponse {
private int code;
private String message;
private Response response;
}
import okhttp3.MediaType
import okhttp3.Protocol
import okhttp3.Request
import okhttp3.ResponseBody
import retrofit2.Response
fun Response<*>.errorResponse(): ErrorResponse {
val errorResponse = ErrorUtils.parseError(this)
return errorResponse
}
А здесь используйте:
viewModelScope.launch(Dispatchers.Main) {
val response: Response<*> = TransportService.getTraidersList()
if (response.isSuccessful) {
finishLoadData()
val traders: List<Trader> = response.body() as List<Trader>
traderListLiveData.postValue(traders)
} else {
val errorResponse = response.errorResponse()
val message = errorResponse.message // here use extension function
messageLiveData.value = SingleEvent(message)
}
}
Nice. Это нормально работает.
Но я хочу использовать свойства расширения. Я пытаюсь это:
val Response<*>.errorResponse: ErrorResponse {
get() = ErrorUtils.parseError(this)
}
Но я получаю ошибку компиляции:
Function declaration must have a name Unresolved reference: get