gpt4 book ai didi

Java:更改对象值而不更改所有引用

转载 作者:行者123 更新时间:2023-11-30 03:59:11 25 4
gpt4 key购买 nike

这可能是一个菜鸟问题,但我就是不明白。

我正在尝试在我的游戏中实现 A* 寻路。我正在关注this tutorial以及 AstarPathfinder.java 中的代码。但是,我没有实例化 AStarPathfinder 类并为所有节点创建一个 2D 数组,而是创建了一个静态方法,将我的 2D 数组(关卡/世界)、开始和结束节点传递给该方法。因此,我总是必须将当前和下一个节点存储在 Node nextNode current 中。然后,我将它们添加到打开或关闭列表中(取决于它们所属的位置),并使用其 setter 方法更改 Node 的 x 和 y 值(位置),以获得下一个节点。

经过几分钟的调试,我注意到这个(ofc)也改变了openListcloseList内节点的值。为了防止这种情况,我可以简单地调用 next = new Node(int x, int y) 而不是仅设置值,但由于我的寻路每隔几个渲染循环就运行一次,它会扰乱垃圾收集和成本很多性能。因此,我正在寻找一种拥有一个 Node 变量的可能性,我可以使用默认构造函数实例化一次,然后更改其值而不更改其在列表中的值。

这可能吗?

最佳答案

虽然这不是您问题的直接答案,但希望它能帮助您做出正确的决定

JVM 已经非常擅长重用对象,因此您通常不应该害怕使用 new 关键字。

更详细的阅读,请参阅should-we-avoid-object-creation-in-java

关于Java:更改对象值而不更改所有引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354115/

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