我是一名翻译助手,以下是您需要的翻译内容。涉及IT技术相关的非空值数组如下:
private val dogs = ArrayList{Dog}() // replace {} with <>
它的数据是这样填充的:
val dog = Dog()
dog.name = “bob”
dogs.add(dog)
有多达3种不同的方法可以像这样填充它,具体取决于代码流程。一旦数组被填充,就会进行处理:
if (dogs.size > 0) {
Collections.sort(dogs, Dog.comparator)
for (i in dogs.indices) {
val dog = dogs[i]
dog.bark()
}
}
所有这些都在AsyncTask doInbackground中完成。
当调用dog.bark()时,我偶尔会收到以下异常:
致命异常:java.lang.RuntimeException 执行doInBackground()时发生错误
Caused by java.lang.NullPointerException: Attempt to invoke virtual method com.myname.model.Dog.P()' on a null object reference
at com.myname.util.RunnableAsync.doInBackground(SourceFile:5)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
简而言之,非空对象的ArrayList有时会包含一个null对象。 我正在试图弄清楚这是如何发生的。我希望Kotlin在将非空值添加到ArrayList时会报错,当然我不确定这首先是如何发生的,因为我只在数组中放置了非空值。线程问题?欢迎任何想法:)谢谢。
Dog.P()
的实例。如果你用假设的代码替换了你的代码,请不要这样做。请发布你的真实代码,并且提供更多的代码内容。 - undefined