【发布时间】:2021-07-20 09:51:28
【问题描述】:
我只是希望澄清一些在 Kotlin 中使用单例的方法。
我有这门课:
class TestClass {
companion object {
val instance = TestClass()
fun runSync2() {
Log.d("TAG", "Running sync2")
}
init {
Log.d("TAG", "Init companion")
}
}
init {
Log.d("TAG", "Init class")
}
fun runSync1() {
Log.d("TAG", "Running sync1")
}
}
还有这个测试功能:
1. TestClass.instance.runSync1()
2. TestClass.runSync2()
3. TestClass().runSync1()
- 当调用函数 1 两次时,伴随对象内的 init 将被调用一次。所以只创建了一个 TestClass 实例并运行 runSync1() 两次,对吗?
- 当调用函数 2 两次时,伴随对象内的 init 将被调用一次。所以只创建了一个 TestClass 实例并运行 runSync2() 两次,对吗?那么1和2有什么区别呢?
- 两次调用函数 2 时,2 个 TestClass 实例 crated,2 个类内的 init 将运行,2 个 runSync1 将独立运行?
您能否提供更多说明并更正错误的部分?
【问题讨论】:
-
您的代码中没有
function1或function2,请使用准确的名称,以便我们更好地理解问题 -
没有实际问题,只是澄清一下。正如您在标记为 1、2、3 的“以及此测试功能”部分中看到的。当提到“功能1”时,它指的是标记为1的功能->“TestClass.instance.runSync1()”蚂蚁等。