将对象添加到ArrayList而不引用

时间:2015-06-11 08:14:28

标签: java arraylist collections reference

我可以在没有引用的情况下将对象添加到ArrayList吗?

例如,我可以按如下方式添加对象:

ArrayList<Dog> list=new ArrayList<Dog>();      
list.add(new Dog);

3 个答案:

答案 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<Dog> list = new ArrayList<>();   
list.add(new Dog());