微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提取 map(...) 调用中的代码

如何解决提取 map(...) 调用中的代码

我想把示例代码map(...)方法里面的代码提取到单独的一行(现在代码太长,影响可读性):

final Specification<PeriodicInvoice> noFilterClause = Specification.where(null);
Optional<Date> of = ...;

of.map(f -> Specification.<PeriodicInvoice> where((root,query,cb) -> cb.greaterThan(root.<Date> get("fromPeriod"),f)))
            .orElse(noFilterClause);

我不想写一个函数。我想将提取代码内联在 of.map(...) 上方一行。有什么建议吗?

解决方法

您可以将该 lambda 表达式存储在 Function 类型的变量中:

final Specification<PeriodicInvoice> noFilterClause = Specification.where(null);
Optional<Date> of = ...;

Function<Date,Specification<PeriodicInvoice>> mapper = 
    f -> Specification.<PeriodicInvoice> where((root,query,cb) -> cb.greaterThan(root.<Date> get("fromPeriod"),f));
of.map(mapper)
  .orElse(noFilterClause);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。