如何在Java中使用Optional?

How to use Optional in Java?

我有一项服务可以从数据库中查询优惠券列表。此服务 returns Optional 给客户。

return listOfCoupons.isEmpty() ? Optional.empty() : Optional.of(listOfCoupons.get(listOfCoupons.size() - 1));

并且此代码的​​客户端使用 Optional 命名为 'coupons' 的方式如下:

if (coupons.isPresent) {
   save (coupons.get());
} 

这是 Optional 的正确用法吗?

你对 Optional<T> API 的使用从远处看起来很好,因为我看不出有任何误用。如果我挑剔并提出一些我会改变的建议:

if (coupons.isPresent) {
   save (coupons.get());
} 

至:

coupons.ifPresent(c -> save(c)); //or method reference

不过话又说回来,这真的很下流。