Android 使类类型为泛型后,无法在response.body()中获取值

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

我正在尝试使用改型从服务器获取数据。我使用泛型,因为我不想在我的项目中有重复的代码。但是,当类型为T时,我无法获取响应正文中的值。我只能在写入服务器响应的类名时访问它

这是我的代码:

 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) {

         }
    });
 }