在 Kotlin 中如何从不同的模块访问内部成员
Posted
技术标签:
【中文标题】在 Kotlin 中如何从不同的模块访问内部成员【英文标题】:How can I access the internal members from a different module in Kotlin? 【发布时间】: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
【参考方案1】:
它不是很漂亮,但你可以创建两个函数。
open class BaseClass
protected fun foo()
println("foo!")
internal fun fooInternal() = foo()
【讨论】:
以上是关于在 Kotlin 中如何从不同的模块访问内部成员的主要内容,如果未能解决你的问题,请参考以下文章