是否有一个为List<T>
提供方法的库(例如Apache,Guava)
void add(Optional<T> element)
会添加元素(如果存在)(如果是!element.isPresent()
,则为空操作)?显然很容易实现,但是看起来似乎已经有人在做了。
答案 0 :(得分:12)
您只需:
即可代替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 []
答案 1 :(得分:2)
很容易实现,但是看起来很明显 似乎有人可能已经做过了。
好吧,有时候显而易见的事情是因为简单而被忽略的事情。但是,由于标准选项旨在用作方法return types instead of method parameters,因此Java标准库中没有此功能,并且不久也不会看到它。
此外,“例如,如果可以使用此方法”,那么在进行简单操作(例如@azro建议)时,将需要另外add
方法重载污染API。