没有指定哪个列表实现

时间:2011-09-29 13:33:01

标签: java list arraylist dao

我怀疑考虑改变这个:

List<String> elements = new ArrayList<String>();

 elements = elementDao.findElementsById(elementId);

List<String> elements;

elements = elementDao.findElementsById(elementId);

(我正在使用带有Hibernate的DAO)

这会导致任何错误或异常(事实上我没有指定应该返回哪个List实现)吗?

2 个答案:

答案 0 :(得分:3)

第一个创建了一个新的arraylist。创建的列表只是必须收集的垃圾。

第二个更好,但应该减少到

List<String> elements = elementDao.findElementsById(elementId);

您似乎认为赋值运算符可用于填充调用者创建的列表。不是这种情况。赋值运算符只是引用DAO创建的列表(可以是任何类型的List),并将此引用赋给变量。

答案 1 :(得分:2)

您可以安全地更改它,因为:

List<String> elements = new ArrayList<String>();

创建一个新的ArrayList并将其分配给elements,然后

elements = elementDao.findElementsById(elementId);

抛弃原始的ArrayList(并将其标记为垃圾收集)并将elements分配给List elementDao,因此第二种方法就是安全,高效。