我对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资源,敌人,物品等。还是应该?
最佳答案
event
的确不为空,inputEvents
的是,尚未初始化。您可以在字段规范(private ArrayDequeue<InputEvent> inputEvents = new ArrayDequeue<InputEvent>();
)或构造函数中对其进行初始化。