Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 提取map(…)调用中的代码_Java_Java 8_Spring Data Jpa - Fatal编程技术网

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);