Parameter type must not include a type variable or wildcard: java.util.List<?> (parameter #1)

retrofit2 接口需要传入数组时候,会报以上错误,
@GET(ServiceHelper.ROOM_SENDGIFT_ONEKEY_INFO)
suspend fun getRoomGiftOneKeyInfo(
    @Query("giftIdList") giftIdList:@JvmSuppressWildcards List<Any>,
@Query("receiveUserId") receiveUserId:String):BaseResponse<MutableMap<String,String>>

数组对象加入@JvmSuppressWildcards声明可以正常使用

Kotlin 使用通配符编译泛型使 Kotlin API 和 Java 能一起使用。当某个参数或者字段的类型为 泛型 时,会在 Java 代码中自动生成。比如,Kotlin 的代码 List<Foo> 参数就会在 Java 中显示为 List<? super Foo>。

但这种特性会导致在 Dagger 中出现问题,因为它期望类型是完全 (也称 invariant) 匹配的。使用 @JvmSuppressWildcards 将确保 Dagger 会看到没有通配符的类型。

猜你喜欢

转载自blog.csdn.net/qq_34475640/article/details/130108311