in my android app I use Retrofit 2:
public enum OperationType {
@SerializedName("payment")
PAYMENT,
@SerializedName("payout")
PAYOUT,
@SerializedName("transfer")
TRANSFER
}
fun getOperationsList(typeList: List<OperationType>, callback: Callback<List<Operation>>) {
val call = myRestClient.getOperationsList(typeList)
executeRequest(call, callback)
}
@GET("/operations")
fun getOperationsList(@Query("type") typeList: List<OperationType>): Call<List<Operation>>
but I get runtime error in this line:
val call = myRestClient.getOperationsList(typeList)
error:
Shutting down VM
FATAL EXCEPTION: main
Process: md.qsystems.android.tango.debug, PID: 22714
java.lang.IllegalArgumentException: Parameter type must not include a type variable or wildcard: java.util.List<? extends OperationType> (parameter #1)
for method TangoRestClient.getOperationsList
at retrofit2.Utils.methodError(Utils.java:52)
at retrofit2.Utils.methodError(Utils.java:42)
at retrofit2.Utils.parameterError(Utils.java:61)
at retrofit2.RequestFactory$Builder.validateResolvableType(RequestFactory.java:764)
at retrofit2.RequestFactory$Builder.parseParameterAnnotation(RequestFactory.java:401)
at retrofit2.RequestFactory$Builder.parseParameter(RequestFactory.java:306)
at retrofit2.RequestFactory$Builder.build(RequestFactory.java:193)
at retrofit2.RequestFactory.parseAnnotations(RequestFactory.java:67)
at retrofit2.ServiceMethod.parseAnnotations(ServiceMethod.java:26)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170)
at retrofit2.Retrofit$1.invoke(Retrofit.java:149)
at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy1.getOperationsList(Unknown Source)
at mTransportService.getOperationsList(TransportService.kt:160)
You can add
@JvmSuppressWildcards
either inside the angle brackets before the String type, or before the List. Both should work and remove the wildcard.
Workaround taken from this issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With