带有 destruct 功能的 Kotlin 实例计数器

问题描述 投票:0回答:1

我有一个类,我想跟踪创建的实例数量。我使用了一个在构造函数内递增的静态变量。将保存实例的变量设置为 null 时,有没有办法减少数量。

某些语言具有 deinit 或析构函数。我知道 Kotlin 没有这些,有其他方法可以实现这一点吗?

kotlin memory-management instance
1个回答
0
投票

不,JVM 不允许这样做。事实上,JVM 甚至不知道实例本身的数量,GC 仅检查是否从某个地方引用了它。

你唯一能做的就是每次都手动增加它,或者只要你使用变量就使用 lambda 表达式来增加计数器

private var counter = 1
private val theInstance: InstanceType = TODO()//never use it outside here
fun <T> useInstance(usage: (InstanceType) -> T): T{
    try{
        counter++
        return usage(theInstance)
    }finally{
        counter--
    }
}
useInstance {
    doSomething(it)
}
© www.soinside.com 2019 - 2024. All rights reserved.