У меня два вопроса.Во-первых, рассмотрим приведенный ниже код.
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» добавляются к 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
?Почему это не печать?Разве это не называется?