Что такое "System.out:: println" в Java 8

Я видел код в java 8 для итерации коллекции.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
numbers.forEach(System.out::println);

Какова функциональность System.out::println? И как вышеприведенный код может выполнять итерацию через Список.

И какое использование оператора ::, где еще мы можем использовать этот оператор?

Ответ 1

Он называется "ссылкой на метод" и представляет собой синтаксический сахар для таких выражений:

numbers.forEach(x -> System.out.println(x));

Здесь вам действительно не нужно имя x, чтобы вызвать println для каждого из элементов. То, что полезно для ссылки на метод - оператор :: означает, что вы вызываете метод println с параметром, имя которого явно не указано:

numbers.forEach(System.out::println);