Kotlin 有没有一种从内部类调用父超函数的简单方法?

Kotlin 有没有一种从内部类调用父超函数的简单方法?,kotlin,Kotlin,我有以下代码 class DrawingActivity : AppCompatActivity() { private inner class ImageInfoObserver : Observer<ImageInfo> { override fun onChanged(imageInfo: ImageInfo?) { // Is there a way to perform DrawingActivity.super.fini

我有以下代码

class DrawingActivity : AppCompatActivity() {


    private inner class ImageInfoObserver : Observer<ImageInfo> {
        override fun onChanged(imageInfo: ImageInfo?) {
            // Is there a way to perform DrawingActivity.super.finish() ?
            superFinish()
        }
    }

    fun superFinish() {
        super.finish()
    }
    
    override fun finish() {
        ...
        super.finish()
    }
class DrawingActivity:AppCompatActivity(){
私有内部类ImageInfoObserver:Observer{
更改后覆盖乐趣(imageInfo:imageInfo?){
//是否有执行DrawingActivity.super.finish()的方法?
超精
}
}
趣味超精{
超级完成
}
覆盖乐趣完成(){
...
超级完成
}
目前,我需要专门创建
superFinish()
函数,以便内部类
ImageInfoObserver
调用
DrawingActivity.super.finish()


我想知道,有没有更简单的方法来实现这一点,而不必创建
superFinish()

您可以使用与访问
DrawingActivity
相同的方法来实现,而不是
this@DrawingActivity
您使用的是
super@DrawingActivity
相反,所以

super@DrawingActivity.finish()
类似于从内部调用
super.finish()
DrawingActivity。也可以

但是,有没有任何理由不想对实际类调用
finish()
this@DrawingActivity.finish())为什么要跳过
DrawingActivity
自己的
finish
代码?如果有充分的理由,在重写的
finish()中生成额外的代码可能是值得的
函数以某个状态变量为条件


这样,当某些事情发生或没有发生时,通过读取函数就可以清楚地看到,所有完成拆卸逻辑都在一个地方处理。

Mmmm。  我不禁想知道什么样的设计需要这种能力,它造成了什么样的维护问题,以及是否可以对它进行更改以避免这种情况。是的,我可能还不太清楚,但我认为如果在
finish
中有代码有时需要运行,有时不需要,那么你应该处理它在
finish
本身中。其他组件不应该在活动后面拔掉另一个插头,这对未来是一个坏兆头!