我有一个类,我想跟踪创建的实例数量。我使用了一个在构造函数内递增的静态变量。将保存实例的变量设置为 null 时,有没有办法减少数量。
某些语言具有 deinit 或析构函数。我知道 Kotlin 没有这些,有其他方法可以实现这一点吗?
不,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)
}