Программа выведет []. Метод присваивает null только своей локальной копии ссылки; переменная list в main продолжает ссылаться на пустой ArrayList.
Что будет выведено в консоль после выполнения программы
Программа выведет []. Метод присваивает null только своей локальной копии ссылки; переменная list в main продолжает ссылаться на пустой ArrayList.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой результат появится в стандартном выводе, когда запустится следующий фрагмент кода.
import java.util.ArrayList;
import java.util.List;
public class FirstTask {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
doSomething(list);
System.out.println(list);
}
private static void doSomething(List<String> list) {
list = null;
}
}
Ответ
Программа выведет []. Метод присваивает null только своей локальной копии ссылки; переменная list в main продолжает ссылаться на пустой ArrayList.
При вызове doSomething значение ссылки копируется в параметр. Замена параметра не меняет переменную вызывающего метода. Если бы функция вызвала list.add("x"), общий объект изменился бы и main увидел [x]. Для замены самой ссылки метод должен вернуть новое значение, а вызывающий код — присвоить его своей переменной. NullPointerException в представленном фрагменте не возникает.