Java的:在不改变所有引用更改的对象值(Java: Change an objects value

2019-10-19 13:39发布

这可能是一个noob问题,但我只是不明白这一点。

我想实现我的游戏A *寻路。 我下面这个教程 ,并在代码AstarPathfinder.java 。 但是,而不是实例化AStarPathfinder类和具有二维数组的所有Nodes我做了一个静态方法,而我通过我的二维数组(水平/世界),开始和结束节点。 这个原因我总是要存储当前和下一个Node一个Node nextNode current 。 我然后将它们添加到打开或关闭列表(取决于它们属于哪里)和改变的x和y的值(位置) Node与他们的setter方法,有下一个节点。

调试运行的几分钟后,我注意到,这(OFC)也改变了内部节点的值openListclosedList 。 为了防止这种情况,我可以简单地叫next = new Node(int x, int y) ,而不是只设置值,但由于我的寻路运行每隔数渲染它会搞砸了垃圾收集循环和耗费了大量的性能。 所以我期待了有可能有一个Node的变量,我可以用默认的构造函数实例化一次,然后在没有列表改变其值改变它的值。

这有可能以某种方式?

Answer 1:

虽然这不是直接回答你的问题,希望这将帮助你做出一个好的决定

JVM已经在重新使用对象变得非常好,一般情况下不应害怕使用new关键字。

有关详细阅读,看应该-WE-避免-对象创建中的Java



Answer 2:

什么你要找的是不可能的。 你只需要一个Node对象的一个​​实例,并指出了在多个地点该对象。 你需要作出新的节点实例。

它会搞砸了垃圾收集和耗费了大量的性能

如果您有没有做过性能测试,并证明这是不可接受的瓶颈,你不应该承担这一点。



文章来源: Java: Change an objects value without changing all references