square / retrofit

A type-safe HTTP client for Android and the JVM
https://square.github.io/retrofit/
Apache License 2.0
43.11k stars 7.3k forks source link

java.lang.IllegalArgumentException: Parameter type must not include a type variable or wildcard: java.util.List<MyModel> (parameter #5) for method ApiService.myRequest #4195

Open hackaprende opened 3 months ago

hackaprende commented 3 months ago

I am getting this error when trying to send a list of objects in the body of my post request:

java.lang.IllegalArgumentException: Parameter type must not include a type variable or wildcard: java.util.List (parameter #5) for method ApiService.myRequest

The request is like this:

@POST(MY_URL)
suspend fun makeRequest(@Body myList: List<MyModel>): MyResponse

The error is still present on version com.squareup.retrofit2:retrofit:2.11.0

The solution for now is adding @JvmSuppressWildcards

This fixes the issue but makes the code less readable and more complex to understand

A solution example for others who have this problem:

@POST(MY_URL)
@JvmSuppressWildcards
suspend fun makeRequest(@Body myList: List<MyModel>): MyResponse
JakeWharton commented 3 months ago

Are you sure it's on the body parameter? The exception indicates you've trimmed down the example.