Can I use is null instead of isInitialized in Kotlin?

Viewed 70

The following Code A is from the project play-billing-samples.

Can I use is null instead of isInitialized in Kotlin? just like Code B

Code A

lateinit private var localCacheBillingClient: LocalBillingDb

val inappSkuDetailsListLiveData: LiveData<List<AugmentedSkuDetails>> by lazy {
    if (::localCacheBillingClient.isInitialized == false) {
          localCacheBillingClient = LocalBillingDb.getInstance(application)
    }
     ...
}

Code B

lateinit private var localCacheBillingClient: LocalBillingDb

val inappSkuDetailsListLiveData: LiveData<List<AugmentedSkuDetails>> by lazy {
    if (localCacheBillingClient == null) {
          localCacheBillingClient = LocalBillingDb.getInstance(application)
    }
    ...
}
1 Answers

Yes, you can, but you'd have to change the type of the variable to LocalBillingDb? and get rid of the lateinit modifier:

private var localCacheBillingClient: LocalBillingDb? = null 

val inappSkuDetailsListLiveData: LiveData<List<AugmentedSkuDetails>> by lazy {
    if (localCacheBillingClient == null) {
          localCacheBillingClient = LocalBillingDb.getInstance(application)
    }
    ...
}
Related