Tag: 只读

Kotlin – 如何使外部类只读字段

我在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即使我不能在构造函数中初始化它?