如何计算在Kotlin中创建的对象数?

时间:2020-09-02 05:33:03

标签: kotlin

在以下代码段中,我创建了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

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}")
    }
相关问题