在函数中给它一个值后,值变为空
Value becomes null after giving it a value in a function
我正在尝试创建一个扫描仪 SDK,但遇到了一个问题,我在一个函数中创建了一个 class 变量值,该函数在 Kotlin 中覆盖了另一个 class。
我已经尝试了 Kotlin 中的非空断言运算符和安全调用运算符。我已经用println
方法测试了各个区域的代码,证明确实如此。
我也试过删除 'private' 修饰符。
请注意,我更改了一些不相关的名称(更改很明显)。
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
此时值可以为空的原因是因为您异步初始化它。您无法保证 AidcManager.CreatedCallback
会在第二个 if.
之前执行
---`onCreate`---`createAidc`---`secondIf`---------------`call callback here`
\ /
------ some async work here---
另请参阅首先打印的内容 - work2
或 work1
。
所以,这是完全正常和意料之中的。
我正在尝试创建一个扫描仪 SDK,但遇到了一个问题,我在一个函数中创建了一个 class 变量值,该函数在 Kotlin 中覆盖了另一个 class。
我已经尝试了 Kotlin 中的非空断言运算符和安全调用运算符。我已经用println
方法测试了各个区域的代码,证明确实如此。
我也试过删除 'private' 修饰符。
请注意,我更改了一些不相关的名称(更改很明显)。
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
此时值可以为空的原因是因为您异步初始化它。您无法保证 AidcManager.CreatedCallback
会在第二个 if.
---`onCreate`---`createAidc`---`secondIf`---------------`call callback here`
\ /
------ some async work here---
另请参阅首先打印的内容 - work2
或 work1
。
所以,这是完全正常和意料之中的。