在以下代码段中,我创建了4个CompanionClass实例,并想知道有多少个实例 我创建的实例,因此尝试了很多方法但没有用。在这里我使用了伴侣对象类 跟踪对象,但我知道它与对象没有任何关系,因为keepTrackOfObjects()是 静态的。有人可以帮我解决这个问题吗?
class CompanionClass
{
companion object{
var numberOfObjects = 0
fun keepTrackOfObjects() = println("number of created objects currently is: +
${++numberOfObjects}")
}
}
fun main()
{
val obj1 = CompanionClass()
CompanionClass.keepTrackOfObjects()
val obj2 = CompanionClass()`enter code here`
val obj3 = CompanionClass()
val obj4 = CompanionClass()
CompanionClass.keepTrackOfObjects()
}
// output is
// 1
// 2
答案 0 :(得分:2)
您可以使用init
块来计算您创建的元素:
class CompanionClass {
companion object {
var counter: Int = 0
fun counter(): Int {
return counter
}
}
init {
counter++
}
}
您可以在此kotlin playground中测试行为。
答案 1 :(得分:0)
问题出在您的同伴对象上,
var numberOfObjects = 0
每次创建新实例时,都会初始化变量。因此,请在一个单独的类中创建此变量,并在其中保留所有静态内容并从那里使用它。那么您的同伴对象将像这样。
companion object{
fun keepTrackOfObjects() = println("number of created objects currently is: +
${++numberOfObjects}")
}