簡體   English   中英

Kotlin中的改進實現 - 方法默認參數

[英]Retrofit implementation in Kotlin - Method Default Parameter

我正在嘗試在Kotlin中實現這個Android的Retrofit入門 我已經創建了一個Retrofit類的實例,但當我嘗試在沒有 callback參數的接口中調用端點方法時,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'

從教程:

您不會將回調作為最后一個參數傳遞。 您使用客戶端獲取調用對象。 一旦你在創建的調用對象上調用.enqueue,請求將由Retrofit進行

我如何在Kotlin中實現這一點?

reposForUser方法需要兩個參數: StringCallback ,但是你只提供String

 client.reposForUser("fs-opensource")

您可以通過執行以下操作使回調“可選”:

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

我在你的回調類型后面添加了一個問號,以便說:它是一個可以為空的參數。 如果您甚至想說, 沒有回調是默認的 ,也使客戶端調用更方便,我建議您為callback提供默認值,如下所示:

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

請注意,您現在需要以安全的方式訪問callback ,因為它可能為null。 在這里閱讀

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM