我不确定它是否会消耗更多&使用arraylist时会有更多的记忆力。通过下面的代码块我很困惑:
headerRow = new ArrayList<>();
headerRow.add("");
xlHeader.add(headerRow);
// headerRow = null; //<----- This is the line of confusion.
headerRow = new ArrayList<>();
headerRow应该无效吗?
添加到headerRow
的空字符串对象(“”)会发生什么?
答案 0 :(得分:3)
headerRow
将引用新创建的ArrayList
,旧的将注册到垃圾收集。
因此,不需要无效。
此外,
headerRow = new ArrayList<>(); // in JDK 7
而不是
headerRow = new ArrayList();
是实例化的正确语法。
答案 1 :(得分:2)
这不是必需的,它将引用新创建的对象。变量headerRow
将引用新创建的ArrayList
。
所以你可以直接使用headerRow = new ArrayList();
答案 2 :(得分:1)
你只需使用
headerRow = new ArrayList();
之前无需取消它, JVM 管理它。
在前两行代码中
List<String> headerRow = new ArrayList<String>();
headerRow = new ArrayList();
第二行是多余的。没有必要写headerRow = new ArrayList();
由于您已在前一行初始化。
答案 3 :(得分:0)
我不知道你为什么要这样做:
List<String> headerRow = new ArrayList<String>();
// First one is correct; lose the line that follows.
headerRow = new ArrayList();
答案 4 :(得分:0)
此操作对性能没有任何影响。
当我们以控制形式使用它时,我们可以将null设置为不再执行动作。
例如
Closable stream = getStream();
try {
stream.close();
stream = null;
catch(Exception e) {
log(e);
} finally {
if(stream != null) {
try { stream.close(); } catch(Exception empty) {}
}
}