我有两个班级。首先是MainActivity.kt,我有一些字符串。第二个是像这样的ServiceBuilder.kt
object ServiceBuilder {
private const val URL = "https://someLink.com" // <------------- In here I should transfer the string in my MainActivity.kt class
// Create Logger
private val logger = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
// Create a Custom Interceptor to apply Headers application wide
val headerInterceptor = object: Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
request = request.newBuilder()
.addHeader("x-device-type", Build.DEVICE)
.addHeader("Accept-Language", Locale.getDefault().language)
.build()
val response = chain.proceed(request)
return response
}
}
// Create OkHttp Client
private val okHttp = OkHttpClient.Builder()
.callTimeout(5, TimeUnit.SECONDS)
.addInterceptor(headerInterceptor)
.addInterceptor(logger)
// Create Retrofit Builder
private val builder = Retrofit.Builder().baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttp.build())
// Create Retrofit Instance
private val retrofit = builder.build()
fun <T> buildService(serviceType: Class<T>): T {
return retrofit.create(serviceType)
}
}
我需要正确地将字符串从 MainActivity 传输到此对象。我认为在ServiceBuilder中创建MainActivity对象不是一个好主意,因为它分配了多余的内存。使用数据库或共享首选项也不是一个好主意,因为这种调用会减慢工作程序的速度,并且这种技术是为解决其他问题而创建的。
请告诉我解决这个问题的正确方法。P.S.我现在问这个问题很容易,但我现在不知道如何设计应用程序架构
如果使用类而不是对象,则可以在要初始化它的那一刻尝试在构造函数中传递此值
是的,你是对的。将 MainActivity
对象放在 ServiceBuilder
中不是一个好主意。相反,您可以添加这样的私有字段和函数,以将其作为服务构建的一个步骤启动到ServiceBuilder
。然后,您将能够在构建服务
函数中使用它
private var stringField: String? = null
fun fieldString(stringField: String): ServiceBuilder {
this.stringField = stringField
return this
}
然后在您的活动中将其用作
ServiceBuilder
.fieldString("string to set")
.buildService(...)
另外,你可以在这里回顾一下Kotlin中关于构建器模式的不同时刻。
我得到了这个错误: “变量'a'已赋值,但其值永远不可用”
问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。
问题内容: 用Java开发一个简单的井字游戏。 我有一个名为的课程。此类应包含有用的游戏方法。游戏发生在另一个班级。 中的方法是。该方法应该将所有9个按钮(井字游戏板)上的文本设置为空白,再次将它们设置为启用,然后将变量设置为1。 这是它的代码: 是游戏主类中的JButtons数组。 该方法以前在游戏的主要类中使用。但是现在它在不同的类中,它无法到达该类中的按钮并对其进行操作。 我在中创建了get
问题内容: 我想将其他类的一些值传递给渲染器。渲染器计算出值之后,我在帮助器类中有了一个互斥锁,该互斥体应该告诉我渲染器已完成计算,因此我可以继续使用这些新值。我可以毫无问题地传递渲染器的值,但是我不知道如何找回它们。我目前使用一些静态变量,但是在渲染器更改它们之后,它们似乎丢失了。它们在我的其他课程中不可见。例: 一类 } 在我的渲染器中 : 我的助手班: hasCalculated在渲染器中肯
我是一个非程序员,有非常少的代码接触,但我想修改一个现有的代码库。我大大简化了下面的代码。请让我知道,如果我可以提供任何进一步的信息或如果这是没有意义的所有!Vocab很难。:) ClassD:
可能重复: Java中的动态变量名: 假设我有一个字符串,如下所示。 现在,我想创建一个字符串,但是字符串的变量将被称为“Hello”。为了使字符串名为“Hello”,我必须访问string以获取名称“Hello”,这样我就可以将其用作变量名。下面是我想看的。 感谢您的努力,请尝试向我解释,因为我是Java初学者D