Это на Java, кросс-платформенная и отлаживается на компьютере под управлением Ubuntu Oneric с OpenJDK, установленным в качестве среды выполнения.
У меня есть 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() был унаследован как часть определения EnumSet в стандарте Java.
Я самоучка, но не сумасшедшая.Либо у меня что-то не так, либо есть лучший способ сделать это. Кто-нибудь, обладающий полезными знаниями, может помочь?