Don't know it does not accept this return type


I have a class declared as a generic API response data model:
data class APIResponse<out T>(val data: T?)

And I am us Retrofit2 to declare APIs. I just simplified it (ignored those annotations)

interface APIs {
    fun getListCall(): Call<APIResponse<String>>

And I have a function to get the API call. However, i shows an error.

private fun getAPI(apis: APIs): Call<APIResponse<Any>> {
    return apis.getListCall()

Type mismatch.

because I remember if I put “out” modifier that could fix it as here says

I tested with other functions with similar declarations, it does not give me the error, becuase “out” modifier is added.

private fun getStringResponseList(): List<APIResponse<String>> {
    return listOf(APIResponse("data"))
private fun getResponseList(): List<APIResponse<Any>> {
    return getStringResponseList()

Scratch my head and still cannot figure it out…


Sorry. I think I found it.
The List interface has “out”, whereas Call does not…don’t know how fix it…Call is written with java.