Я пытаюсь передать generic object
методу override
, который реализует методы из interface
.
К сожалению, я получаю ошибку при попытке реализовать это. Ошибка выглядит следующим образом:
Переопределить с помощью функции с параметром уточненного типа
Вот мой код
class ServiceVolley : ServiceInterface {
val TAG = ServiceVolley::class.java.simpleName
val basePath = "http://192.168.68.104:3005/"
override inline fun <reified T> post(
resource: String,
payload: JSONObject,
crossinline onSuccess: (response: JSONObject?) -> Unit,
crossinline onError: (statusCode: Int) -> Unit
) {
val jsonObjReq = object : JsonObjectRequest(Method.POST, basePath + resource, payload,
Response.Listener<JSONObject> { response ->
Klaxon().parse<T>(response.toString())
onSuccess(response)
},
Response.ErrorListener { error ->
onError(error.networkResponse.statusCode)
}) {
@Throws(AuthFailureError::class)
override fun getHeaders(): Map<String, String> {
val headers = HashMap<String, String>()
headers["Content-Type"] = "application/json"
headers["withCredentials"] = "true"
return headers
}
}
BackendVolley.instance?.addToRequestQueue(jsonObjReq, TAG)
}
}
interface ServiceInterface {
fun <T> post(resource: String, payload: JSONObject, onSuccess: (response: JSONObject?) -> Unit, onError: (statusCode: Int) -> Unit)
}
и я вызовите эту функцию со следующим
apiController.post<User>("user/sign-in", payload,
{ user: User? ->
Log.d("RESPONSE", user.toString());
},
{ statusCode: Int ->
Log.d("ERROR", statusCode.toString())
})