ArrayList中的对象是否仍然有引用?

ICo*_*mer 2 java reference arraylist lwjgl

我用LWJGL做了一个简单的"游戏",让你可以控制一个三角形(这与我的OpenGL知识的大小有关),当你按下空格键时它会拍出较小的三角形.每个射弹在创建时存储在ArrayList中:projectiles.add(new Projectile(x, y));.我可以通过循环访问这些(下面显示的代码),这是否意味着引用仍然存在?

for (int i = 0; i < projectiles.size(); i++) {
    projectiles.get(i).shoot();
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Gre*_*pff 5

是的,存在对您的射弹的可达参考,因此射弹不会被垃圾收集.

当ArrayList不再相关时,您将需要从ArrayList中删除项目,否则您将慢慢"泄漏"内存.

  • @Bohemian:只是部分有用的评论.;) (2认同)

Boh*_*ian 5

答案是"可能".

ArrayList引用了它所拥有的元素,但......

如果您的代码具有对ArrayList的引用,那么也会引用元素(通过ArrayList引用).

如果ArrayList中不被你的代码中引用,那么元素引用,无论是ArrayList和它的所有元素将被回收.要取消引用ArrayList及其所有元素,只需执行即可list = null;