Вызов метода после Optional.filter () без передачи объекта - PullRequest
1 голос
/ 06 ноября 2019

Я могу понять следующее:

user
  .filter(u -> "Sam".equals(u.getName()))
  .ifPresent(this::doSomethingWithUser);

, если user.getName равно "Sam", тогда передать user локальному методу doSomethingWithUser().

Однако что еслиЯ просто хотел вызвать локальный метод, не передавая user, но сохраняя проверку, что user.getName равен "Sam"?

Делает ли этот вариант использования использование Optional избыточным?

Ответы [ 2 ]

4 голосов
/ 06 ноября 2019

Просто игнорируйте обязательный параметр функции. Это означает, что вы не можете использовать сокращенный синтаксис :: и выглядит так:

user
  .filter(u -> "Sam".equals(u.getName()))
  .ifPresent(u -> doSomethingWithoutUser());
1 голос
/ 06 ноября 2019

Вы можете просто проверить наличие Optional для такого случая:

if(user.filter(u -> "Sam".equals(u.getName()).isPresent()) {
    // call your method without user
}
...