Объясните выражение System.out::println
Выражение System.out::println является ссылкой на метод экземпляра (instance method reference). Здесь System.out — это конкретный объект типа PrintStream, хранящийся в статическом поле out класса System, а println — вызываемый метод этого объекта.
Эта ссылка эквивалентна лямбда-выражению x -> System.out.println(x). Она часто используется как аргумент forEach():
Пример
List.of("a", "b", "c").forEach(System.out::println);
Тип функционального интерфейса определяется контекстом: в случае forEach() это Consumer<T>, поскольку println принимает аргумент и ничего не возвращает. Компилятор автоматически подбирает нужную перегрузку println на основе типа элементов.
На собеседовании: ключевое слово здесь — «ссылка на метод конкретного экземпляра». Уточните, что
System.out— не класс, а объект, и что тип ссылки зависит от контекста использования.