科特林 super.finalize()
Kotlin super.finalize()
从 Java
迁移到 Kotlin
时,我遇到了一个问题。我覆盖了 Object
的 finalize()
方法:
@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()
。
从 Java
迁移到 Kotlin
时,我遇到了一个问题。我覆盖了 Object
的 finalize()
方法:
@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()
。