Вариант <Integer>против поставщика <Integer> - PullRequest
0 голосов
/ 01 ноября 2019

В), для чего нужен дополнительный функциональный интерфейс?

Я понимаю, что необязательный параметр заключается в том, чтобы избегать нулевой проверки ... но все же необходимо выполнить проверку .isPresent () ??

2) мы бы добились того же с помощью поставщика и сделали бы .get () в случае, когда нам когда-либо понадобилось значение ??

List<Integer> intList = Arrays.asList(1,2,4);
currently--> Optional<Integer> opt =intList.stream().reduce((a,b)->a*b);
                    int result =opt.get();


suggestion--> Supplier<Integer> sup=intList.stream().reduce((a,b)->a*b);
               int result =sup.get();

зачем вводить что-то новое, если поставщик мог бы сделать то же самоевещь.? или просто есть один из них ??

1 Ответ

0 голосов
/ 03 ноября 2019

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

Основной контракт Необязательного заключается в том, что может присутствовать или не иметь существующая стоимость.

Базовый договорПоставщик в том, что значения могут быть получены по требованию. Единственный способ заявить, что у Поставщика нет никакой доступной ценности, - это выдвинуть исключение, чего мы могли бы и наверняка хотели бы избежать, как пользователя Поставщика.

...