gpt4 book ai didi

java - 即使元素存在,HashMap.get()也会返回null

转载 作者:行者123 更新时间:2023-12-01 16:59:40 25 4
gpt4 key购买 nike

在我的代码中,我向 HashMap 添加了一个条目。稍后,当尝试通过元素的键获取该元素时,它返回 null。

还不能发布图片,但是调试后是这样的:

/image/vf1bW.png /image/NxxEI.png

请帮我解决这个非常奇怪的错误!

编辑:根据您的要求,这些是 addEntry() 和 getEntry() 方法以及代码中调用它们的位置:

backgroundActor = new BackgroundActor(new BackgroundGraphicsComponent());
backgroundActors.addEntry(backgroundActor, "Background");
borderActor = new BorderActor(new BorderPhysicsComponent(), new BorderGraphicsComponent());
backgroundActors.addEntry(borderActor, "Border");

@SuppressWarnings("unchecked")
@Override
public T getEntry(String key) {
if (gameObjects.get(key) != null) {
return (T) gameObjects.get(key);
}
else throw new NullPointerException(); // this is where it fails
}

@Override
public void addEntry(T gameObject, String key) {
if (gameObject != null) gameObjects.put(gameObject, key);
else throw new NullPointerException();
}

EDIT2:已解决。问题出在 HashMap 的 put() 方法上,该方法将键作为其第一个参数,然后是值。感谢 Nizil 和 user1498360!

最佳答案

put方法Map将键作为第一个参数,然后是值。

所以在你的 addEntry 中方法,你应该这样做:

gameObjects.put(key, gameObject);

而不是

gameObjects.put(gameObject, key);

这解释了为什么你的调试器打印 {BackgroundActor=Background, BorderActor=Border}而不是{Background=BackgroundActor, Border=BorderActor}

关于java - 即使元素存在,HashMap.get()也会返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28696106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com