Java 使用GObject方法时从哈希表获取NullPointerException

Java 使用GObject方法时从哈希表获取NullPointerException,java,netbeans,hashtable,Java,Netbeans,Hashtable,所以我尝试创建一个小型僵尸射击游戏。我使用来自ACM包(jtf.ACM.org)的GTurtle类。我有一个GTurtle的附加线程,这是一个GObject。我有一个带有while循环的run方法,即检查boolean是否为true,如果为true,则执行-this.forward()方法 我试着运行游戏并按下按钮,若它是W或D,GTurtle对象中的布尔值就会改变,线程执行动作。然后我得到一个例外: java.lang.NullPointerException at java

所以我尝试创建一个小型僵尸射击游戏。我使用来自ACM包(jtf.ACM.org)的GTurtle类。我有一个GTurtle的附加线程,这是一个GObject。我有一个带有while循环的run方法,即检查boolean是否为true,如果为true,则执行-this.forward()方法

我试着运行游戏并按下按钮,若它是W或D,GTurtle对象中的布尔值就会改变,线程执行动作。然后我得到一个例外:

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)

根据
哈希表的源代码判断。put
您可以通过
null
传递
参数,或者通过
null
传递
参数,或者同时传递
null

抛出:
NullPointerException
-如果键或值为
null

注意:我不知道您使用的JDK版本(下面的链接没有与您的版本匹配的第394行),尽管推理仍然有效


很有意思的是,你的报价完全是我答案来源的复制粘贴。我承认,只是javadoc报价部分@BalusC的无耻复制粘贴。对我来说,这是为了避免从oracle网站上再次复制/修剪它。如果我能+1你的工作,我会!我通过改变游戏的逻辑解决了这个问题。我对位置X和Y使用变量,并创建方法来执行步骤。谢谢你的回答。我在哈希表上发现了一些新东西。
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