Позволяет обратиться к статическому методу, определенному в классе.
ContainingClass::staticMethodName
Например, если в классе Main7
у нас есть статический метод printHello()
, то мы можем получить на него ссылку вот так Main7::printHello
.
Что значит получить ссылку? Так же, как получаем привычным образом ссылку на любой объект, вроде классического Duck duck = new Duck()
.
Только раньше мы получали ссылки на весь объект целиком, а теперь на его часть, на метод.
Получив ссылку и сохранив ее в переменной
FunctionalInterface printHello = Main7::printHello;
Мы можем ее использовать, например просто вызвать сам метод
printHello();
Полный листинг:
public class Main7 {
static void printHello() {
System.out.println("Hello");
}
public static void main(String[] args) {
FunctionalInterface printHello = Main7::printHello;
printHello();
}
}
Но чаще нам такая ссылка нужна, чтобы передать какой-то метод (точнее ссылку на него) в другой метод в виде параметра.