科特林 super.finalize()

Kotlin super.finalize()

Java 迁移到 Kotlin 时,我遇到了一个问题。我覆盖了 Objectfinalize() 方法:

@Override
protected void finalize() throws Throwable {
    stopTimer();
    super.finalize();
}

当我尝试用 Kotlin 做同样的事情时,我找到了解决方案。第一个来自文档:

 protected fun finalize() {
    stopTimer()
    super.finalize()
}

article 中的第二个(俄语):

@Suppress("ProtectedInFinal", "Unused")
protected fun finalize() {
    stopTimer()
    super.finalize()
}

但是在这两种情况下我都不能根据IDE调用super.finalize(),因为它说unresolved reference:finalize

也许有人知道如何在 Kotlin 中完成这项工作?谢谢。

这是 Java 中 finalize 的合同:

The finalize method of class Object performs no special action; it simply returns normally. Subclasses of Object may override this definition.

因此您不需要调用超类。您将调用一个空的实现。

调用 super.finalize() 的需要只出现在 类 中,而不是直接派生自 kotlin.Any

故事的其余部分已经在 official documentation 中讲述:只需声明一个 protected fun finalize()