If I am using this code in Java then its working fine. When I convert that code in kotlin then I got Error.

Logcat

08-2023:46:51.003 3782-3782/com.qkangaro.app W/System.err:java.lang.IllegalArgumentException:参数类型不能包含类型变量或通配符:java.util.Map(参数#1) 08-20 23:46:51.003 3782-3782/com.qkangaro.app W/System.err:for method ApiInterface.updateCustomerDetail 08-20 23:46:51.003 3782-3782/com.qkangaroo.app w/System.err:at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:752) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/System.err:at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:743) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/System.err:at retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod.java:761) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/System.err:at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:195) 08-20 23:46:51.004 3782-3782/com.qkangaroo.app w/System.err:at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170) 08-20 23:46:51.005 3782-3782/com.qkangaroo.app w/System.err:at retrofit2.Retrofit$1.invoke(Retrofit.java:147) 08-20 23:46:51.005 3782-3782/com.qkangaro.app w/System.err:at$Proxy0.updateCustomerDetail(本地方法) 08-20 23:46:51.005 3782-3782/com.qkangaroo.app w/System.err:at com.qkangaroo.app.Fragments.MoreScreen.MoreFragment.updateProfile(MoreFragment.kt:261) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/System.err:at com.qkangaroo.app.Fragments.MoreScreen.MoreFragment$clickListener$1.onClick(MoreFragment.kt:191) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/System.err:at android.view.View.performClick(View.java:3517) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/System.err:at android.view.View$PerformClick.run(View.java:14155) 08-20 23:46:51.006 3782-3782/com.qkangaroo.app w/System.err:at android.os.Handler.handleCallback(Handler.java:605) 08-20 23:46:51.007 3782-3782/com.qkangaroo.app w/System.err:at android.os.Handler.dispatchMessage(Handler.java:92) 08-2023:46:51.007 3782-3782/com.qkangaro.app w/System.err:at android.os.Looper.loop(Looper.java:154. 08-20 23:46:51.007 3782-3782/com.qkangaroo.app w/System.err:at android.app.ActivityThread.main(ActivityThread.java:4624) 08-2023:46:51.008 3782-3782/com.qkangaro.app W/System.err:at java.lang.refect.Method.invokeNative(Native方法) 08-20 23:46:51.009 3782-3782/com.qkangaroo.app w/System.err:at java.lang.reflect.Method.invoke(Method.java:511) 08-20 23:46:51.009 3782-3782/com.qkangaroo.app w/System.err:at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809) 08-20 23:46:51.010 3782-3782/com.qkangaroo.app w/System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) 08-20 23:46:51.011 3782-3782/com.qkangaro.app w/System.err:at dalvik.system.NativeStart.main(本地方法)

碎片kt

    var map:HashMap<String,RequestBody> = HashMap<String, RequestBody>()
    map.put("version",ApiClient.createRequestBody(AppConstants.API_VERSION))
    map.put("auth_token", ApiClient.createRequestBody(customer.authToken!!))
    map.put("customer_name",ApiClient.createRequestBody(profileName))
    map.put("email", ApiClient.createRequestBody(profileEmail))

    val apiInterface = ApiClient.client.create(ApiInterface::class.java)

    val updateCustomerCall: Call<UpdateCustomer> = apiInterface.updateCustomerDetail(map)
    updateCustomerCall.enqueue(object : Callback<UpdateCustomer> {
        override fun onResponse(call: Call<UpdateCustomer>?, response: Response<UpdateCustomer>?) {

        }

        override fun onFailure(call: Call<UpdateCustomer>?, t: Throwable?) {
            utilities!!.hideProgress(progress)
        }
    })

ApiClient.kt

val MULTIPART_FORM_DATA = "multipart/form-data"

fun createRequestBody(s: String): RequestBody {
    return RequestBody.create(
            MediaType.parse(MULTIPART_FORM_DATA), s)
}

ApiInterface,.kt

@Multipart
@POST("customer")
fun updateCustomerDetail(@PartMap map: Map<String,RequestBody >): Call<UpdateCustomer>

Gradle锉

implementation "com.squareup.okhttp3:okhttp:3.8.1"
implementation "com.squareup.okhttp3:logging-interceptor:3.8.1"
implementation ("com.squareup.retrofit2:retrofit:2.3.0"){
     exclude module: 'okhttp'
}
implementation "com.squareup.retrofit2:converter-gson:2.3.0"

推荐答案

RequestBody之前加@JvmSuppressWildcards

fun updateCustomerDetail(@PartMap map: Map<String, @JvmSuppressWildcards RequestBody >): Call<UpdateCustomer>

Kotlin相关问答推荐

Kotlin是否针对范围和进度优化sum()?

在 Kotlin 中,为什么我们要在闭包中捕获值

为什么Kotlin不用static inner class来实现带有object关键字的单例呢?

MyType.()在 Kotlin 中是什么意思?

为什么记得不将 StateFlow 转换为特定类型?

如何在 Kotlin 中将with代码转换为完整代码?

如何在 Hibernate Panache 中进行部分搜索

为什么 IntelliJ Idea 无法识别我的 Spek 测试?

将 Gradle 子元素与 Kotlin 多平台一起使用

Kotlin 类的调用方法

如何在 Spring WebFlux 的响应正文中流式传输二进制数据

Kotlin 具体化的泛型不会按计划保持类型

IllegalStateException:function = , count = 3, index = 3

如何计算Kotlin中的百分比

内联 Kotlin 方法没有覆盖报告

你如何在 Kotlin 中注释 Pair 参数?

Kotlin:测试中的 java.lang.NoSuchMethodError

Java的Kotlin:字段是否可以为空?

Kotlin 是否支持部分应用程序?

带有注释为@RegisterExtension的字段的 JUnit 5 测试在 Kotlin 中不起作用