小编典典

ArrayList问题

java

我有两个值,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_redsmall_blue敌人中的三个和五个添加到activeEnemies。每当我想更改数组内的变量时,例如:

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

__small_red数组中的 每个都 被更改,而不仅仅是index处的一个1


阅读 258

收藏
2020-11-26

共1个答案

小编典典

您每次将3个对 同一个 smallRed敌人的引用添加到arraylist。

解释;

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关键字时,您都在创建对象的新实例,否则,您只是传递对旧对象的引用。

2020-11-26