【发布时间】:2021-10-31 08:55:13
【问题描述】:
我有一个依赖于在类加载时初始化的属性的函数。目前是这样写的:
object MyObj {
private val myPrivateProperty = someInitializingStuff();
fun foo(bar: String) {
doSomethingWith(bar, myPrivateProperty)
}
}
但是,如果可以使用更简单的语法 foo(bar) 而不是 MyObj.foo(bar) 来调用它,我更愿意。所以我想我可以把它从对象声明中取出来,像这样:
object MyObj {
private val myPrivateProperty = someInitializingStuff();
}
fun foo(bar: String) {
doSomethingWith(bar, MyObj.myPrivateProperty)
}
我希望foo 仍然能够访问myPrivateProperty,因为它在同一个源文件中,但不幸的是它无法访问。我不想让它成为internal,因为这样我的同事就可以从他们自己的类中访问它,但我希望它只能被这个源文件中声明的函数访问。
如果我是用 C++ 编写的,我会在函数体内将 myPrivateProperty 定义为静态局部变量,但这在 Kotlin 中是不可能的。
我还有其他方法可以做到吗?
【问题讨论】:
标签: kotlin visibility private