Список Java <T>, который условно добавляет Необязательно <T> - PullRequest
0 голосов
/ 02 декабря 2018

Есть ли библиотека (например, Apache, Guava), которая предоставляет List<T> с методом

void add(Optional<T> element)

, который добавляет элемент, если он присутствует, (и не используется, если !element.isPresent())?Очевидно, что это легко реализовать, но кажется, что это такая очевидная вещь, что, возможно, кто-то уже сделал это.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Очевидно, что это легко реализовать, но кажется, что такая очевидная вещь кажется, что кто-то, возможно, уже сделал это.

Ну, иногда очевидные вещи - это вещи, которые не учитываютсякак они просты.Тем не менее, это не то, что доступно в стандартной библиотеке Java и в ближайшее время не увидит его, так как Optionals были предназначены для использования в качестве метода возвращаемых типов вместо параметров метода .

Кроме того, «если бы этот метод был доступен», тогда потребовалась бы еще одна перегрузка метода add, загрязняющая API, когда это было бы просто сделать, как предлагает, например, @azro.

0 голосов
/ 02 декабря 2018

Вместо list.add(optio) вам просто нужно:

optio.ifPresent(list::add);

Пример:

Optional<Integer> optio = Optional.ofNullable(Math.random() > 0.5 ? 52 : null);
List<Integer> list = new ArrayList<>();
optio.ifPresent(list::add);
System.out.println(list);                 //50% of [52], 50% of []
...