Java 提取map(…)调用中的代码
我想将示例代码中Java 提取map(…)调用中的代码,java,java-8,spring-data-jpa,Java,Java 8,Spring Data Jpa,我想将示例代码中map(…)方法中的代码提取到单独的行中(现在代码太长,影响可读性): 最终规范noFilterClause=规范,其中(空); 可选的=。。。; of.map(f->Specification.where((root,query,cb)->cb.greaterThan(root.get(“frompiriod”),f))) .orElse(无过滤器); 我不想写一个新函数。我想将提取的代码内联到.map(…)的上方一行。有什么建议吗?您可以将lambda表达式存储在函数类型的
map(…)
方法中的代码提取到单独的行中(现在代码太长,影响可读性):
最终规范noFilterClause=规范,其中(空);
可选的=。。。;
of.map(f->Specification.where((root,query,cb)->cb.greaterThan(root.get(“frompiriod”),f)))
.orElse(无过滤器);
我不想写一个新函数。我想将提取的代码内联到.map(…)的
上方一行。有什么建议吗?您可以将lambda表达式存储在函数
类型的变量中:
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);
最终规范noFilterClause=规范,其中(空);
可选的=。。。;
函数映射器=
f->规格。其中((root,query,cb)->cb.greaterThan(root.get(“fromPeriod”),f);
of.map(mapper)
.orElse(无过滤器);
谢谢。我至少尝试了上千次,但总是遇到一个血腥的“目标类型必须是函数表达式”。但你的答案是有效的。我以前可能管理不当函数
导入。谢谢大家!@迈克尔,不客气!
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);