我必须使用现有的应用程序,并且有一个List存储所有渲染的对象,以便稍后在gui更改时将其删除。
这是List:
private List<Component> registeredComponents = new ArrayList<Component>();
现在我想知道Java是否只存储对象的引用(ZK组件),或者它是否存储了对象的副本。问题是我是否应该删除它。
答案 0 :(得分:13)
该列表仅包含参考。这适用于所有类型的集合,而不仅仅是ArrayLists。
在Java中,实际上没有办法来实现&#34;抓住&#34;对象本身。当你创建一个新对象时,你得到的只是对它的引用(并且没有办法#34;取消引用&#34;它通过使用例如C ++中的*
运算符)。 / p>
答案 1 :(得分:3)
List存储对象的引用,而不是副本。对象实例与恰好有另一个引用它们的任何其他人共享。
至于想要删除它,如果你以后有另一种方法从GUI中删除对象(也许你可以查询父组件或其他东西),列表可能是多余的。但即便如此,这里可能没有太大的开销,也没有让你的程序变得复杂。