gpt4 book ai didi

android - Kotlin 中的 Retrofit 实现 - 方法默认参数

转载 作者:太空狗 更新时间:2023-10-29 13:07:37 26 4
gpt4 key购买 nike

我正在尝试实现这个 getting started with Retrofit for AndroidKotlin 中。我已经创建了 Retrofit 类的实例,但是当我尝试在接口(interface)中调用端点方法时,Kotlin 似乎不喜欢它没有回调参数。这是所有相关代码。

数据类:

data class GitHubRepo(val id:Int,val name:String)

界面:

interface GitHubClient {
@GET("/users/{user}/repos")
fun reposForUser(@Path("user") user: String,callback: Callback<List<GitHubRepo>> )
}

改造实现:

    val httpClient = OkHttpClient.Builder()

val builder = Retrofit.Builder().baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())

val retrofit = builder.client(httpClient.build()).build()

val client = retrofit.create(GitHubClient::class.java)

val call = client.reposForUser("fs-opensource") <-- Error - No value passed for parameter 'callback'

来自教程:

You don’t pass your callback as the last parameter. You use the client to get a call object. Once you’ve invoked .enqueue on the created call object the request will be made by Retrofit

我如何在 Kotlin 中实现它?

最佳答案

reposForUser 方法需要两个参数:StringCallback,但您只提供了 String:

 client.reposForUser("fs-opensource")

您可以通过这样做使您的回调“可选”:

fun reposForUser(@Path("user") user: String, callback: Callback<List<GitHubRepo>>? )

我在您的回调类型后面添加了一个问号,以便说明:这是一个可空 参数。如果你还想说,那个no回调是默认,也让客户端调用更方便,我建议你给callback提供一个默认值,像这样:

fun reposForUser(@Path("user") user: String, callback: Callback<List<GitHubRepo>>? = null)

请注意,您现在需要以安全的方式访问 callback,因为它可能为空。阅读here .

关于android - Kotlin 中的 Retrofit 实现 - 方法默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45790554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com