lan*_*nyf 1 visibility internals kotlin
在 Kotlin 中,当将“内部”应用于公共类的成员函数时,它仅在模块内部可见。
在存在核心模块和另一个模块(称为外部模块)的情况下,该模块具有从核心模块中定义的类派生的类。
package com.core
class BaseClass {
internal fun method_internal() {...}
public fun method_public() {...}
}
Run Code Online (Sandbox Code Playgroud)
在核心模块中,method_internal()可以在BaseClass.
在应用程序中,无论谁依赖于核心模块,都BaseClass可以在应用程序中使用,但在应用程序中它看不到内部的method_internal(). 这就是internal我们想要的行为。
在另一个模块(外部模块)中,它有一个派生自BaseClass.
package com.outermodule
class DerivedClass : BaseClass {
......
}
Run Code Online (Sandbox Code Playgroud)
在外部模块中,它可以使用method_public()来自 DerivedClass,但无法访问method_internal().
它不能使method_internalasprotected因为它应该允许在核心模块中的任何地方进行访问。
如何使该方法internal在一个模块中具有可见性,但至少能够从其他模块中的派生类访问?
它并不漂亮,但您可以创建两个函数。
\nopen class BaseClass {\n protected fun foo() {\n println("foo!")\n }\n\n internal fun fooInternal() = foo()\n\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2542 次 |
| 最近记录: |