如何解决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 举报,一经查实,本站将立刻删除。