gpt4 book ai didi

android - 在 kotlin 中重新创建对象

转载 作者:行者123 更新时间:2023-11-29 15:00:04 34 4
gpt4 key购买 nike

我有一个简单的问题:需要使用其他参数重新创建一个对象。有这个对象:

object NetworkClient {
var BASE_URL = "http://google.ru" //we can take this from another class or Pref's
const val API_BASE_URL = "$BASE_URL/api/"

val httpClient = OkHttpClient.Builder()
val client: Client
var retrofit: Retrofit

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

retrofit = builder.client(httpClient.build()).build()
client = retrofit.create<PapaJobsClient>(Client::class.java)
}
}

在极少数情况下,您需要将 BASE_URL 即时更改为另一个字符串并重新创建客户端等。我知道如何制作它,但我的解决方案很难 - 需要重新设计我使用此类但我想创建的所有地方这个对象具有具体的参数。您如何看待这个问题?

最佳答案

您需要为此创建一个单独的类,因为单例(Kotlin 中的object)不能有构造函数:

class NetworkClient(val baseUrl: String) {
const val API_BASE_URL = "$baseUrl/api/"

val httpClient = OkHttpClient.Builder()
val client: Client
var retrofit: Retrofit

init {
// ...
}
}

使用对象让当前的networkClient实例始终可用:

object NetworkClientProvider {
var networkClient = NetworkClient("http://google.ru")
}

用法,如果您需要创建新的NetworkClient:

NetworkClientProvider.networkClient = NetworkClient("http://someOtherDomain.com")

关于android - 在 kotlin 中重新创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48169960/

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