這可能是一個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