Полагаю, это объясняет, почему я был удивлен оригинальным кодом.
Эта концепция называется:
Ссылка на метод экземпляра произвольного объекта определенного типа.
Пример: ContainingType::methodName
как объясненоin: methodreferences.html
Из этого документа:
Ниже приведен пример ссылки на метод экземпляра произвольного объекта определенного типа.:
String[] stringArray
= { "Barbara", "James", "Mary", "John","Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
Эквивалентное лямбда-выражение для ссылки на метод String::compareToIgnoreCase
будет иметь формальный параметр list (String a, String b)
, где a и b - произвольные имена, используемые для лучшего описания этого примера.Ссылка на метод будет вызывать метод a.compareToIgnoreCase(b)
.