我正在尝试创建扫描仪SDK,并遇到了一个问题,即我在一个函数中创建了一个类变量值,该函数在Kotlin中覆盖了另一个类。
我在Kotlin中尝试了非空断言运算符和安全调用运算符。我已经使用println
方法测试了代码的各个方面,以证明确实是这种情况。
我还尝试过删除“私人”修饰符。
请注意,我更改了一些不相关的名称(更改很明显)。
class XYZ : Activity , xyz.abc, def.hjk{
private var barcodeReader: BarcodeReader? = null
private var manager: AidcManager? = null
override fun onCreate()...
...
create(this,
object: AidcManager.CreatedCallback {
override fun onCreated(aidcManager: AidcManager?) {
manager = aidcManager
barcodeReader = manager?.createBarcodeReader()
if (manager != null){
println("work1")
//manager is not null here
}
}
})
if (manager != null){
//manager is null here
println("work2")
}
我希望manager
和barcodeReader
不是null
答案 0 :(得分:2)
此时该值可以为null的原因是因为您以异步方式对其进行了初始化。您无法保证AidcManager.CreatedCallback
将在第二个if之前执行。
---`onCreate`---`createAidc`---`secondIf`---------------`call callback here`
\ /
------ some async work here---
另请参阅先打印的内容-work2
或work1
。
因此,这是完全正常和预期的。