我可以在没有引用的情况下将对象添加到ArrayList
吗?
例如,我可以按如下方式添加对象:
ArrayList<Dog> list=new ArrayList<Dog>();
list.add(new Dog);
答案 0 :(得分:2)
你不能这样做:
list.add(new Dog);
但是这个:
list.add(new Dog());
为什么要这样做?
实际上非常简单, JVM
会自动在List
内保留已创建对象的引用,以保持其活着,因此您无需关心。像往常一样,如果从列表中删除此对象而未在其他任何地方引用,则Garbage Collector
将是可读的。
答案 1 :(得分:1)
是的,你可以。将对象添加到arrayList后,只有对象位于堆中的位置才重要。没关系,你可以参考或不参考。
但是,它应该是list.add(new Dog())
。
Dog
之后你错过了这个问题。
答案 2 :(得分:0)
是的,你可以。
如果您没有在其他任何地方引用新狗,只要该列表符合垃圾回收条件,就会进行垃圾回收。另请参阅this answer。
除了对示例代码的其他建议改进外,您应该
List
优先于ArrayList
(请参阅Why should the interface for a Java class be preferred?)您的代码将如下所示:
List<Dog> list = new ArrayList<>();
list.add(new Dog());