尝试将InputEvent推入ArrayDeque时出现NullPointerException

时间:2013-07-28 03:22:59

标签: java io nullpointerexception

我对Java很新,并且在严格的C语言中严重生锈,所以我似乎无法解决这个问题:

import java.awt.event.InputEvent;
import java.util.ArrayDeque;

class DataBase
{
    private ArrayDeque<InputEvent> inputEvents;
    private static final DataBase instance = new DataBase();

    private DataBase() {}

    public InputEvent pollEventStack()
    {
        return inputEvents.poll();
    }

    public boolean pushToEventStack(InputEvent event)
    {
        boolean result = false;
        try {
            result = inputEvents.add(event);
        } catch (NullPointerException e) {
            Debug.log(event.paramString()); // We end up here with valid data in the log. Event is not as null as it claims to be, huh?

            System.exit(0);
        }
        return result;
    }

    public static DataBase getInstance()
    {
        return instance;
    }
}

如果有兴趣,这是我在日志中获得的实际字符串:

KEY_PRESSED,keyCode=27,keyText=Escape,keyChar=Escape,keyLocation=KEY_LOCATION_STANDARD,rawCode=27,primaryLevelUnicode=27,scancode=1,extendedKeyCode=0x1b

我确信这是一个非常简单的东西,我很遗憾,不幸的是搜索没有产生任何建设性的结果。

P.S。:作为旁注,我的所有实体都有一个全球化的单身储物箱,即使是个好主意? InputEvents在他们自己的类中可能是最好的,但是从长远来看,这应该存储gfx资源,敌人,物品等。还是应该?

1 个答案:

答案 0 :(得分:1)

event确实不为空,inputEvents是,它尚未初始化。您可以在字段规范(private ArrayDequeue<InputEvent> inputEvents = new ArrayDequeue<InputEvent>();)或构造函数中初始化它。