Android-泛型类作为Kotlin中用于改装调用的返回类型

Android-泛型类作为Kotlin中用于改装调用的返回类型,android,kotlin,generics,retrofit2,Android,Kotlin,Generics,Retrofit2,我有以下方法: override suspend fun getData(pageNr: Int): NetworkResult { // make the request val response = getDataApi.getData(pageNr) // based on response, return either Success or Error return if(response.isSuccessful){

我有以下方法:

override suspend fun getData(pageNr: Int): NetworkResult {
    
    // make the request
    val response = getDataApi.getData(pageNr)
    
    // based on response, return either Success or Error
    return if(response.isSuccessful){
         NetworkResult.Success(response.body())
    } else{
         NetworkResult.Error(response.code())
    }
}
Android Studio抱怨返回类型。它说:

"One type argument expected for class NetworkResult<out R>"
为什么会出现这个错误
Success
Error
都是
NetworkResult
的子类型,那么为什么不允许返回其中一个呢

为了完整性,我还添加了改型接口调用方法:

@GET("getData/")
suspend fun getData(@Query("page") page:Int) : Response<MyData>
@GET(“getData/”)
suspend fun getData(@Query(“page”)page:Int):响应

将通用参数添加到
getData
函数的返回类型:

override suspend fun getData(pageNr: Int): NetworkResult<MyData> {
    // ...
}
override suspend fun getData(pageNr:Int):NetworkResult{
// ...
}

您可以将泛型类型更改为
MyData?
,或者如果您确定
response.body()
不返回
null
,请添加
运算符:
NetworkResult.Success(response.body()!!)
将通用参数添加到
getData
函数的返回类型:

override suspend fun getData(pageNr: Int): NetworkResult<MyData> {
    // ...
}
override suspend fun getData(pageNr:Int):NetworkResult{
// ...
}

您可以将泛型类型更改为
MyData?
,或者如果您确定
response.body()
不返回
null
,请添加
运算符:
NetworkResult.Success(response.body()!!)

您的
NetworkResult
具有类型参数
R
您需要在函数签名中指定该参数。因此,无论
response.body()
具有何种类型,您都需要在getData签名中指定。response.body()的返回类型是MyData。您的
NetworkResult
具有类型参数
R
您需要在函数签名中指定该参数。因此,无论
response.body()
具有何种类型,您都需要在getData signature.return response.body()的类型中指定它是MyData。但是else条件不返回MyData实例。相反,使用response.error()返回一个Int值没问题,它返回
Nothing
Nothing
继承其他类,包括
MyData
class.android studio现在抱怨“Required:NetworkResult”和“Found:NetworkResult.Success”。整个if-else分支用红色下划线。好的,我决定使用!!并在其周围添加了一个try/catch块。但else条件不返回MyData实例。相反,使用response.error()返回一个Int值没问题,它返回
Nothing
Nothing
继承其他类,包括
MyData
class.android studio现在抱怨“Required:NetworkResult”和“Found:NetworkResult.Success”。整个if-else分支用红色下划线。好的,我决定使用!!并在其周围添加了一个try/catch块。