これはJavaであり、クロスプラットフォームであり、ランタイムとしてOpenJDKがインストールされたUbuntu Onericを実行しているコンピューターでデバッグされています。
私が取り組んでいるゲームのクラス内をチェックするための 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 Enum Type の本体には、
public enum Passability
{
AIR, ALL, GROUND, NONE, SIGHT, SKILL, STRUCTURE, WATER;
}
文字通り、enum 保存パッケージ宣言全体として。this.passability が宣言されています
private EnumSet <Passability> passability;
クラス定義の冒頭で、Java 標準の EnumSet の定義の一部として add() メソッドが継承されているという印象を受けました。
私は独学ですが、頭がおかしいわけではありません。私が何か間違っているか、これを行うためのより良い方法があります。役に立つ知識をお持ちで、手を貸していただける方はいらっしゃいますか?