最近遇到一個問題,Retrofit + Kotlin請求接口時,使用 Map<String, Any>
作爲參數總是報錯。代碼如下:
@GET("subj/simInfos")
@Headers("baseUrlName:app", "netEnv:$NET_ENV")
fun getSimInfos(@QueryMap params: Map<String, Any>): Observable<Response<SimInfoBean>>
百度了多篇文章,終於找到了可參考的博客 Retrofit + Kotlin請求接口時遇到問題,並找到了原因,問題出在參數map的value類型Any,對於java來說,這個value的類型是Object,可以被Retrofit識別,但對於kotlin來說,retrofit會把Any識別成 “?”,就報出了錯誤。
解決辦法:
添加註解@JvmSuppressWildcards
代碼如下:
@GET("subj/simInfos")
@Headers("baseUrlName:app", "netEnv:$NET_ENV")
fun getSimInfos(@QueryMap params: @JvmSuppressWildcards Map<String, Any>): Observable<Response<SimInfoBean>>