在Kotlin中调用超类的finalize()

在Kotlin中调用超类的finalize(),kotlin,finalize,Kotlin,Finalize,我想将以下Java代码转换为Kotlin: @Override protected void finalize() throws Throwable { try { release(); } finally { super.finalize(); } } 在这本书中,我发现: protected fun finalize() { // finalization logic } 我是这样用的: protected fun fina

我想将以下Java代码转换为Kotlin:

@Override
protected void finalize() throws Throwable {
    try {
        release();
    } finally {
        super.finalize();
    }
}
在这本书中,我发现:

protected fun finalize() {
    // finalization logic
}
我是这样用的:

protected fun finalize(){
    try{
        release()
    }finally {
        super.finalize()   <--- But Android Studio does not recognize finalize()
    }
}
protectedfun finalize(){
试一试{
释放()
}最后{

super.finalize()没有要调用的
super.finalize()
方法,因为您正在子类化
Any
,而不是
对象
Any
没有
finalize()
方法。您也不需要对Java中的
对象
执行此操作,因为基本实现没有任何功能。

没有要调用的
super.finalize()
方法,因为您正在子类化
Any
,而不是
对象
Any
没有
finalize()
方法。您也不需要对Java中的
对象执行此操作,因为基本实现不起任何作用。

您永远不应该依赖
finalize
,而是让类
自动关闭
。无法保证会调用finalize方法,它速度慢,可能会带来安全问题s、 注意
finalize
在Java9()中已经被弃用

对于自动关闭,请选中

然后您将能够在Kotlin中使用
use

class MyClass: AutoCloseable {
    override fun close() {
        // Release here
    }
}

fun main() {
    MyClass().use {
        // Do the work, close will be called for you
    }
}

您永远不应该依赖于
finalize
,而应该使您的类
可自动关闭
。不能保证会调用finalize方法,因为它速度慢,可能会带来安全问题。注意
finalize
在Java9()中已被弃用

对于自动关闭,请选中

然后您将能够在Kotlin中使用
use

class MyClass: AutoCloseable {
    override fun close() {
        // Release here
    }
}

fun main() {
    MyClass().use {
        // Do the work, close will be called for you
    }
}