Понимание предикатов 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 - тип ввода предиката

Другие вопросы по тегам