【发布时间】:2022-01-14 16:30:33
【问题描述】:
在 Kotlin 中,当对公共类的成员函数应用“内部”时,它只在模块内部可见。
如果有核心模块,另一个模块(称为外部模块),其类派生自核心模块中定义的类。
核心模块
package com.core
class BaseClass {
internal fun method_internal() {...}
public fun method_public() {...}
}
在核心模块中,method_internal()可以在BaseClass之外访问。
在app中,凡是依赖核心模块的,BaseClass都可以在app中使用,但在app中看不到内部的method_internal()。这就是想要的 internal 行为。
在另一个模块(外部模块)中,它具有派生自 BaseClass 的类
外部模块
package com.outermodule
class DerivedClass : BaseClass {
......
}
在外部模块中它可以使用来自 DerivedClass 的method_public(),
但无法访问method_internal()。
并且不能将method_internal 设为protected,因为它应该允许在核心模块中的任何地方进行访问。
如何使方法在一个模块中具有internal可见性,但至少能够从另一个模块中的派生类访问?
【问题讨论】:
-
您可以在基类
public中创建另一个方法,该方法接受一个键作为参数,以便运行method_internal
标签: kotlin visibility internals