如何计算在Kotlin中创建的对象数?
在下面的代码片段中,我创建了4个CompanyClass实例,并想知道有多少个 我已经创建了实例,所以尝试了很多方法,但都不起作用。这里我使用了companion对象类 跟踪对象,但我知道它与对象没有联系,因为keepTrackOfObjects()是 静止的有人能帮我解决这个问题吗如何计算在Kotlin中创建的对象数?,kotlin,Kotlin,在下面的代码片段中,我创建了4个CompanyClass实例,并想知道有多少个 我已经创建了实例,所以尝试了很多方法,但都不起作用。这里我使用了companion对象类 跟踪对象,但我知道它与对象没有联系,因为keepTrackOfObjects()是 静止的有人能帮我解决这个问题吗 class CompanionClass { companion object{ var numberOfObjects = 0 fun keepTrackOf
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
您可以使用
init
块对创建的元素进行计数:
class公司class{
伴星{
变量计数器:Int=0
有趣的计数器():Int{
返回计数器
}
}
初始化{
柜台++
}
}
您可以在此中测试行为。您可以使用
init
块来计算您创建的元素:
class公司class{
伴星{
变量计数器:Int=0
有趣的计数器():Int{
返回计数器
}
}
初始化{
柜台++
}
}
您可以在此测试行为。问题在于您的同伴对象
var numberOfObjects = 0
将在每次创建新实例时初始化变量。因此,在一个单独的类中创建这个变量,在这个类中保存所有静态内容并从那里使用它。那么你的伴星就会是这样
companion object{
fun keepTrackOfObjects() = println("number of created objects currently is: +
${++numberOfObjects}")
}
问题在于你的同伴对象
var numberOfObjects = 0
将在每次创建新实例时初始化变量。因此,在一个单独的类中创建这个变量,在这个类中保存所有静态内容并从那里使用它。那么你的伴星就会是这样
companion object{
fun keepTrackOfObjects() = println("number of created objects currently is: +
${++numberOfObjects}")
}
创建一个对象列表,然后计算它们并不难()你在代码中的numberOfObjects++做什么?@Luuk我不需要创建对象列表。假设我需要一两个对象,并且想知道我已经创建了多少类对象。没有列表,您能帮助我吗?@hfarhanahmed在companion对象类中。问题是每次创建新实例时,companion对象{var numberOfObjects=0}都会运行。这个计数器应该在另一个类中,以保留以前的值。创建一个对象列表,然后对它们进行计数并不困难()您在代码中的numberOfObjects++是在哪里执行的?@Luuk我不需要创建对象列表。假设我需要一两个对象,并且想知道我已经创建了多少类对象。没有列表,您能帮助我吗?@hfarhanahmed在companion对象类中。问题是每次创建新实例时,companion对象{var numberOfObjects=0}都会运行。此计数器应位于另一个类中以保留以前的值。我尝试了您的代码段并创建了几个CompanyClass对象。当我打印CompanionClass.counter()时,它将0作为输出,而obj.counter()也是如此。我尝试了您的代码片段,并创建了几个CompanionClass对象。当我打印CompanionClass.counter()时,它将0作为输出,对于obj.counter()也是如此。