Статический метод в ссылке на метод в Java
Если лямбда только вызывает static-метод,
его можно указать напрямую. Слева от ::
стоит имя класса, справа - метод без скобок.
Первый аргумент интерфейса станет первым
параметром этого метода.
Класс Post хранит заголовок и умеет
проверять длину строки статическим методом.
Передадим Post::isShortTitle в
Predicate вместо лямбды:
import java.util.function.Predicate;
class Post {
String title;
Post(String title) {
this.title = title;
}
static boolean isShortTitle(String text) {
return text.length() < 20;
}
}
public class Main {
public static void main(String[] args) {
Predicate<String> check = Post::isShortTitle;
System.out.println(check.test("News"));
System.out.println(check.test("Long headline for article"));
}
}
Тот же приём работает со стандартными классами.
Метод Integer.parseInt подходит для
Function<String, Integer> как
Integer::parseInt.
В классе Article объявите статический
метод isBlank, который возвращает
true для пустой строки. Проверьте строки
"" и "text" отложенным вызовом
этого метода. Выведите оба результата.