Метод конкретного объекта в Java
Ссылку можно зафиксировать на одном экземпляре.
Слева от :: тогда стоит переменная
с объектом, а не имя класса. Метод вызывают
у этого экземпляра, даже если ссылку передают
в интерфейс без параметров.
Запись Post::getTitle без объекта
ожидает строку-параметр. Запись
post::getTitle уже знает, у какой
запи брать заголовок. Сравним обе формы:
import java.util.function.Supplier;
class Post {
private final String title;
Post(String title) {
this.title = title;
}
String getTitle() {
return title;
}
}
public class Main {
public static void main(String[] args) {
Post post = new Post("Release notes");
Supplier<String> fromObject = post::getTitle;
System.out.println(fromObject.get());
}
}
Такой вариант удобен, когда объект уже есть
и нужно отложить вызов его метода: например,
передать Supplier в код, который
прочитает заголовок позже, не меняя ссылку
на другую запись.
Класс Article хранит поле
author и метод getAuthor.
Создайте статью с автором "Ann",
получите автора отложенным вызовом
и выведите результат.