有人在another SO Answer上提出了一个问题,即这样做是不好的做法还是效率低下:
Optional<User> user = ...
user.ifPresent(u -> doSomethingWithoutUser());
代替
if (user.isPresent()) doSomethingWithoutUser();
具体来说,我们正在将零参数方法改编为Consumer<User>
,而忽略了其参数u
。
- 由于这不是Stream的非终端操作,因此
doSomethingWithoutUser()
可能有副作用这一事实就不必担心。 - 我不介意 this 单行可选示例的细节,这可能是一长串功能/ Stream调用的结果,而这些调用很自然地就可以完成lambda调用的内联。