我使用以下代码从 Android Activity 中的 LinkedList 获取项目
currentAlarm = alarmQueue.peek();
alarmQueue 本身就是这样创建的,在扩展 Application 的类中
public static Queue<Long> getAlarmQueue() {
if (alarmQueue == null)
{
Log.d(TAG, "alarmqueue was null, creating new one");
alarmQueue = new LinkedList<Long>();
}
return alarmQueue;
}
该应用程序处于生产状态并在 google play 上发布,但有时会出现错误报告,指出包含 .peek() 的行会引发空指针异常。因此,我添加了您可以在上面看到的空检查,因为我认为 alarmQueue 本身为空。实际上,经过一些测试,我意识到如果 LinkedList 不包含任何项目, .peek() 会抛出 nullpointerexception。
我明白,它可能会返回 null,但文档并没有说它会引发异常 Android Doc LinkedList
我在这里想念什么?谢谢!
编辑:异常的图像证明 EDIT2:我找到了原因.. 多么可怕的错误...... currentAlarm 的类型很长而不是L ong,所以只要是原始数据类型并且不能将 null 作为参数,就会引发 nullpointerexception :/ 但是,这个错误永远不会发生,因为此时,队列中必须有一些东西,所以我必须继续深入挖掘。但是对于这个错误,一切都很好,并且添加了错误处理。