我有一个singleton类,我用java方式实现了它:
companion object {
@Volatile private lateinit var instance: TrapBridge
fun bridge(): TrapBridge {
if (!this::instance.isInitialized) {
synchronized(this) {
if (!this::instance.isInitialized) {
instance = TrapBridge()
}
}
}
return instance
}
}
现在的问题是我不能使用isInitialized
属性,因为它会引发NoSuchFieldError
个异常:
java.lang.NoSuchFieldError: No field instance of type Lcom/sample/trap/model/TrapBridge; in class Lcom/sample/trap/model/TrapBridge$Companion; or its superclasses (declaration of 'com.sample.trap.model.TrapBridge$Companion' appears in /data/app/com.sample.trapsample-L9D8b2vxEQfiSg9Qep_eNw==/base.apk)
and i think it's because instance
is class variable and not instance variable so i can't reference it with this
keyword :/
另外,我无法判断它是否为NULL,因为它抛出UninitializedPropertyAccessException
:
lateinit property instance has not been initialized