我有两个问题。首先,考虑下面的代码。
public class Test{
private static final List<String> var = new ArrayList<String>() {{
add("A");
add("B");
System.out.println("INNER : " + var);
}};
public static void main(String... args){
System.out.println("OUTER : " + var);
}
}
当我运行此代码时,它给了我以下输出
INNER : null
OUTER : [A, B]
任何人都可以详细说明为什么INNER在“A”和“B”添加到“A”和“B”时为空和执行流程collection?
其次,我对上面的代码进行了一些更改并修改为下面的代码(只需将 add 方法放在第一个括号内)
public class Test{
private static final List<String> var = new ArrayList<String>() {
public boolean add(String e) {
add("A");
add("B");
System.out.println("INNER : " + var); return true;
};
};
public static void main(String... args){
System.out.println("OUTER : "+var);
}
}
运行上面的代码后,我得到了以下结果
OUTER : []
看完后,我完全不知道发生了什么。INNER去哪儿了?为什么不打印?不叫吗?
翻过高山走不出你
尚方宝剑之说
白板的微信
相关分类