Mah*_*uri 9 singleton android kotlin
我有一个单例类,我已经用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
}
}
Run Code Online (Sandbox Code Playgroud)
现在问题是我不能使用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)
Run Code Online (Sandbox Code Playgroud)
我认为这是因为instance是类变量而不是实例变量所以我不能用this关键字引用它:/
我也无法检查它是否为null因为它抛出UninitializedPropertyAccessException:
lateinit property instance has not been initialized
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |