這是在Java中,跨平臺並在運行Ubuntu Oneric的計算機上調試,OpenJDK作爲運行時安裝。Java - EnumSet.add(枚舉),拋出NullPointerException
我有一個EnumSet用於在我正在處理的遊戲中的類中檢查內部。我從logcat中讀出這個數據,從我的構造函數中的調試開關中獲得:
Tile : passability being set...?
Exception in thread "Thread-1" javax.media.opengl.GLException:java.lang.NullPointerException
...
Caused by: java.lang.NullPointerException
at net.darkglass.map.Tile.addPassability(Tile.java:144)
...
沒有趣。跟蹤它,我的問題似乎完全是這條線:
public void addPassability(Passability type)
{
this.passability.add(type);
}
由此我指的是該函數的主體。它從構造函數調用如下:
this.addPassability(Passability.AIR);
當NullPointerException發生時。在Passability枚舉類型的主體中,我有
public enum Passability
{
AIR, ALL, GROUND, NONE, SIGHT, SKILL, STRUCTURE, WATER;
}
因爲,毫不誇張地說,整個枚舉保存包聲明。 this.passability聲明
private EnumSet <Passability> passability;
在類定義的開始,我的印象是,在add()方法被繼承的Java標準的EnumSet定義的一部分之下。
我是自學的,但我並不瘋狂。要麼我錯了,要麼有更好的方法來做到這一點。那裏有一些有用的知識能夠伸出援助之手嗎?
可以顯示更多代碼塊嗎?所有我看到,如果一條線在這裏和那裏。 – Adrian 2012-04-05 16:13:24
Jon Skeet擁有它。 我從來沒有初始化它,因爲我習慣於只使用基元〜我試着吻我的工作,因爲它保持了事物的完整。 – 2012-04-05 16:25:26