gpt4 book ai didi

java - 数组列表问题

转载 作者:行者123 更新时间:2023-12-02 19:40:25 26 4
gpt4 key购买 nike

我有两个值,small_redsmall_blue:

private EnemyInfo small_red = new EnemyInfo("Red Fighter", Core.jf.getToolkit().createImage(Core.class.getResource("/com/resources/ENEMY_01.png")), 10, 100, new Location(0, 0), false, 0);
private EnemyInfo small_blue = new EnemyInfo("Blue Fighter", Core.jf.getToolkit().createImage(Core.class.getResource("/com/resources/ENEMY_02.png")), 50, 100, new Location(0, 0), false, 0);

和一个ArrayList:

private ArrayList<EnemyInfo> activeEnemies = new ArrayList<EnemyInfo>();

假设我将三个 small_red 和五个 small_blue 敌人添加到 activeEnemies 中。每当我想更改数组内的变量时,例如:

activeEnemies.get(1).setActive(true); // change one of the small_red enemies
数组中的

每个 small_red 都会发生变化,而不仅仅是索引 1 处的变化。

最佳答案

您每次都会向数组列表添加 3 个对相同小红色敌人的引用。

解释;

private EnemyInfo small_red; //I am a variable, I hold a reference to an EnemyInfo

new EnemyInfo(.....) //I create a new EnemyInfo object "somewhere" and return a reference to it so it can be used.

small_red 可以被视为内存地址(尽管它比这更复杂),因此您多次添加相同的内存地址(就像将相同的房屋地址添加到现实生活中的地址簿中一样) )。从通讯录的哪一页获取地址并不重要;信件寄往同一所房子。

每次使用 new 关键字时,您都会创建对象的新实例,否则您只是传递对旧对象的引用。

关于java - 数组列表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18742268/

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