在Kotlin中调用超类的finalize()
我想将以下Java代码转换为Kotlin:在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
@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
}
}