[英]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
方法需要兩個參數: String
和Callback
,但是你只提供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.