我在Android上有以下的Kotlin类:
class ThisApplication: Application() {
lateinit var network: INetwork
override fun onCreate() {
super.onCreate()
network = Network()
}
}
现在,任何外部类都可以通过简单地执行以下操作来获取INetwork引用:
application.network
然而,这也使得外部类有可能覆盖该值:
application.network = myNewNetworkReference
我希望避免第二个选项。不幸的是,我无法创建val
字段,因为它的初始化需要在onCreate
回调函数内部进行。
我还考虑过将该字段设为私有,并通过函数进行公开,就像这样:
private lateinit var network: INetwork
fun getNetwork() = network
然而,调用getNetwork()的人仍然可以像这样给它赋一个新值:
application.getNetwork() = myNewNetworkReference
如何使网络字段被外部类只读?或者更好的方法是,有没有办法让它成为val
,即使我无法在构造函数内初始化它?
application.getNetwork() = myNewNetworkReference
无法编译。 - yole