我有两个值,small_red和small_blue:
small_red
small_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
activeEnemies.get(1).setActive(true); // change one of the small_red enemies
__small_red数组中的 每个都 被更改,而不仅仅是index处的一个1。
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关键字时,您都在创建对象的新实例,否则,您只是传递对旧对象的引用。
new