这可能是一个noob问题,但我只是不明白。Java:在不更改所有引用的情况下更改对象值
我试图在我的游戏中实现A *寻路。我正在关注this tutorial和AstarPathfinder.java
中的代码。但没有实例化AStarPathfinder类,并有一个2D数组,所有Nodes
我做了一个静态方法,我通过我的二维数组(水平/世界),开始和结束节点。 原因是我总是必须将当前和下一个Node
存储在Node next
和Node current
中。然后将它们添加到打开或关闭列表(取决于它们所属的位置),并使用它们的setter方法更改Node
的x和y值(位置),以获得下一个节点。
经过几分钟的调试后,我注意到这个(ofc)也改变了openList
和closedList
内节点的值。为了防止出现这种情况,我可以简单地调用next = new Node(int x, int y)
而不是只设置值,但是由于我的路径查找每运行几次渲染循环,就会导致垃圾回收,并导致性能下降。所以我正在寻找一个可能性有一个Node
变量,我可以使用默认构造函数实例化一次,然后更改其值而不更改其在列表中的值。
这是可能的吗?
所以这不再是真正的问题了?那很好。正如我在另一个答案上写道的,我听说在render方法中创建新对象(称为每个gameloop的方法)会导致巨大的性能问题。非常感谢 – Springrbua
我和埃里克斯坦在这里一样,不要过早优化,如果你的程序运行良好,没关系。如果你的程序运行不正常,找到瓶颈并修复它。 – Richo
好的,谢谢你的回答。我会尝试'new'运算符并观察性能。谢谢 – Springrbua