我怀疑考虑改变这个:
List<String> elements = new ArrayList<String>();
elements = elementDao.findElementsById(elementId);
到
List<String> elements;
elements = elementDao.findElementsById(elementId);
(我正在使用带有Hibernate的DAO)
这会导致任何错误或异常(事实上我没有指定应该返回哪个List实现)吗?
答案 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
,因此第二种方法就是安全,高效。