これはJavaで、クロスプラットフォームで、実行時にOpenJDKがインストールされたUbuntu Onericを実行しているコンピュータでデバッグされています。Java - EnumSet.add(enum)、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が発生したときに、コンストラクタから呼び出されます。受動性列挙型の本体では、完全に列挙型保存パッケージの宣言のように、
public enum Passability
{
AIR, ALL, GROUND, NONE, SIGHT, SKILL, STRUCTURE, WATER;
}
があります。 this.passabilityは、クラス定義の先頭に
private EnumSet <Passability> passability;
を宣言され、私はadd()メソッドは、Java標準でEnumSetの定義の一部として継承されたという印象の下にありました。
私は独学ですが、私は狂っていません。どちらかが間違っているか、これを行う良い方法があります。誰かが手を貸すことができる有益な知識を持っていますか?
あなたのコードをより多く表示できますか?私が見ているのは、ここに一本の線があるならば。 – Adrian
Jon Skeetはそれを持っています。 私はプリミティブの使用に慣れていたので、決して初期化していませんでした〜私は自分の仕事をキスしようとします。 –