【问题标题】:Parameter type must not include a type variable or wildcard参数类型不得包含类型变量或通配符
【发布时间】:2022-05-03 17:35:57
【问题描述】:

在我的 android 应用中,我使用 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>>

但我在这一行遇到运行时错误:

val call = myRestClient.getOperationsList(typeList)

错误:

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)

【问题讨论】:

    标签: android retrofit2


    【解决方案1】:

    您可以在字符串类型之前的尖括号内或列表之前添加@JvmSuppressWildcards。 两者都应该工作并删除通配符。

    解决方法取自this issue

    【讨论】:

    • IDE 一直显示 Unresolved reference 错误,直到我在末尾添加 s,所以使用 @JvmSuppressWildcards
    猜你喜欢
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多