微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

kotlin,如何使内部函数也能够在子类中被覆盖在其他模块中

如何解决kotlin,如何使内部函数也能够在子类中被覆盖在其他模块中

android 项目有多个模块。模块 A 在 kotlin 中有一些基类

package xxx.module_a

open class InModule_A {
   protected function action() {...}
}

class Runner() {

    fun doSomething() {
        InModule_A().action(). // it is NOT compile,but if the action() is internal it is ok since they are in same module
    }

}

在模块 A 中,Runner 类需要访问 InModule_A() 类成员函数 action()

并且 InModule_A.action() 应该只在 module A 内部可见,并在其他模块的派生类中被覆盖。

module B 中,它具有派生自 InModule_B 的类 InModule_A

package xxx.module_b

class InModule_B {

   protected override function action() {// if InModule_A().action() were a internal it would not be able to override here 
   
   super.action()
   ... ...
   }
}

如何使函数具有内部可见性并能够在派生类中覆盖?

解决方法

我不是 100% 确定我理解,但也许创建一个调用受保护函数的替代函数会适合您的情况。

open class InModule_A {
    protected open fun action() {}
    internal fun internalAction() = action()
}

class Runner() {

    fun doSomething() {
        InModule_A().internalAction()
    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。