Понимание предикатов Java
У меня проблемы с пониманием предикатов Java...
Пример:
public class UserPredicates {
public static Predicate<User> isNameEmpty() {
return p -> p.getFirstName().isEmpty() && p.getLastName().isEmpty();
}
}
Приведенный выше пример сбивает меня с толку, откуда он знает, что p
есть метод getFirstName()
а также getLastName()
?
Если я правильно понимаю, isNameEmpty()
возвращает функцию с одним параметром (p
), но компилятор действительно выясняет тип, глядя на тип возвращаемого значения?
И возвращаемая функция test()
из интерфейса предиката?
1 ответ
Predicate<User>
означает функцию, которая принимает User
в качестве параметра и возвращает boolean
,
Смотрите Javadoc:
Предикат интерфейса
...
Параметры типа:
T - тип ввода предиката