Получение NullPointerException из Hashtable при использовании метода GObject - PullRequest
2 голосов
/ 05 апреля 2011

Поэтому я пытаюсь создать небольшую игру Zombie-Shooter. Я использую класс GTurtle из пакета ACM (jtf.acm.org). У меня есть дополнительный поток для GTurtle, который является GObject. У меня есть метод run с циклом while, который проверяет, является ли логическое значение true, если это так - выполняется метод this.forward ().

Я попытался запустить игру и нажать кнопку, если это W или D, логическое значение в объекте GTurtle изменяется, и Thread выполняет действие. Тогда я получаю это исключение:

java.lang.NullPointerException
         at java.util.Hashtable.put(Hashtable.java:394)
         at acm.util.JTFTools.pause(JTFTools.java)
         at acm.util.Animator.delay(Animator.java)
         at acm.graphics.GTurtle.setLocation(GTurtle.java)
         at acm.graphics.GObject.move(GObject.java)
         at acm.graphics.GTurtle.move(GTurtle.java)
         at acm.graphics.GObject.movePolar(GObject.java)
         at acm.graphics.GTurtle.forward(GTurtle.java)
         at anotherTryJava.Player.run(Player.java:20)
         at java.lang.Thread.run(Thread.java:662)

1 Ответ

12 голосов
/ 05 апреля 2011

Судя по исходному коду для Hashtable.put, вы либо передали key параметр с null или value параметр с null, либо оба null.

С Javadoc .

Выдает:

NullPointerException - если ключ или значение null

Примечание: я не знаю версию JDK, которую вы используете (ссылка ниже не содержит строку 394, совпадающую с вашей версией), хотя причина остается верной!

http://www.docjar.com/html/api/java/util/Hashtable.java.html

public synchronized V put(K key, V value) {
    if (key != null && value != null) {
        [...]
        return result;
    }
    throw new NullPointerException();
}

Hashtable a = ...;
a.put(null, "s"); // NullPointerException
a.put("s", null); // NullPointerException
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...