Android 使类类型为泛型后,无法在response.body()中获取值
我正在尝试使用改型从服务器获取数据。我使用泛型,因为我不想在我的项目中有重复的代码。但是,当类型为T时,我无法获取响应正文中的值。我只能在写入服务器响应的类名时访问它 这是我的代码:Android 使类类型为泛型后,无法在response.body()中获取值,android,generics,kotlin,retrofit,Android,Generics,Kotlin,Retrofit,我正在尝试使用改型从服务器获取数据。我使用泛型,因为我不想在我的项目中有重复的代码。但是,当类型为T时,我无法获取响应正文中的值。我只能在写入服务器响应的类名时访问它 这是我的代码: private fun <T> requestFun(call: Call<T>, default: T) { call.enqueue(object : Callback<T> { override f
private fun <T> requestFun(call: Call<T>, default: T) {
call.enqueue(object : Callback<T> {
override fun onResponse(call: Call<T>, response: Response<T>) {
response.body()
}
override fun onFailure(call: Call<T>?, t: Throwable) {
}
})
}
private-fun-requestFun(调用:调用,默认值:T){
排队(对象:Callback{
覆盖fun onResponse(调用:调用,响应:响应){
答复.正文()
}
覆盖失效时的乐趣(调用:调用?,t:可丢弃){
}
})
}
这是我的模型:
data class JsonResponse<T>(
var data: List<T>? = null,
var success: Boolean = true)
数据类JsonResponse(
变量数据:列表?=null,
变量成功:布尔值=真)
我希望能够使用response.body.result返回数据列表。但是,这不起作用,因为在函数中,我得到的是泛型类型,而不是JsonResponse 您可能应该这样使用它:
private fun <T> requestFun(call: Call<T>, onSuccess: (T) -> Unit) {
call.enqueue(object : Callback<T> {
override fun onResponse(call: Call<T>, response: Response<T>) {
onSuccess(response.body())
}
override fun onFailure(call: Call<T>?, t: Throwable) {
}
})
requestFun<MyClass>(myCall) { myClass: MyClass ->
...
}
private fun <T> requestFun(call: Call<JsonResponse<T>>, onSuccess: (List<T>) -> Unit) {
call.enqueue(object : Callback<JsonResponse<T>> {
override fun onResponse(call: Call<JsonResponse<T>>, response: Response<JsonResponse<T>>) {
val body = response.body()
onSuccess(body.data ?: Collections.emptyList())
}
override fun onFailure(call: Call<JsonResponse<T>>?, t: Throwable) {
}
});
}