Java 这些方法是什么;加上;及;及;在爪哇?
我正在审查一个新的项目代码。我发现了以下几行:Java 这些方法是什么;加上;及;及;在爪哇?,java,jpa,methods,keyword,Java,Jpa,Methods,Keyword,我正在审查一个新的项目代码。我发现了以下几行: crudService.findByNamedQueryFirstResult("TableA.findby.custid", with( "custID", IndividulaID).and("flags", custflags).parameters()) 我在任何类中都没有看到带“and”和“and”的方法。它不是字符串连接。 我知道JPQ查询有with和and。但是怎么可能像上面那样传递参数呢 有人能帮
crudService.findByNamedQueryFirstResult("TableA.findby.custid", with(
"custID", IndividulaID).and("flags", custflags).parameters())
我在任何类中都没有看到带“and”和“and”的方法。它不是字符串连接。
我知道JPQ查询有with和and。但是怎么可能像上面那样传递参数呢
有人能帮忙吗 Java中没有带或和关键字的
。这些是方法调用
在这里,with()
方法通过静态导入(参见@damo的注释)导入,并创建一个生成器类的实例;和();然后,.parameters()
类将构建该类,并返回调用方法实际需要的内容。这是一个经典的构建器模式
静态导入可用于获得良好的可读性效果。考虑一下莫基托。要么你写:
Mockito.when(xxx).then(xxx);
或:
这种结构的通用模式称为流畅界面。要完成答案,我只需指出我为我的一个项目所做的工作:
ProcessorSelector<IN, OUT> selector = new ProcessorSelector<IN, OUT>();
selector = selector.when(predicate1).then(p1)
.when(predicate2).then(p2)
.otherwise(defaultProcessor);
final Processor<IN, OUT> processor = selector.getProcessor();
ProcessorSelector选择器=新的ProcessorSelector();
选择器=选择器。当(谓词1)。然后(p1)
.when(谓词2)。然后(p2)
。否则(默认处理器);
最终处理器=选择器.getProcessor();
ProcessorSelector
类有一个when()
方法;此方法返回另一个类,该类上有then()
方法;然后,then()
方法再次返回一个ProcessorSelector
,它有when()
,等等。最后,otherwise()
方法返回一个ProcessorSelector
,您在它上面有一个.getProcessor()
返回一个处理器这看起来像一个流畅的api(见一般定义)
在您的情况下,它可能是SpringJPA、QueryDSL或类似的框架
要识别API,您应该查看crudService的类型/超类/接口以及with/和/参数的定义。您可以看出它们不是关键字,因为它们需要参数。因此这些是方法。它们可能与crudService定义在同一个jar中。此外,请检查
ProcessorSelector<IN, OUT> selector = new ProcessorSelector<IN, OUT>();
selector = selector.when(predicate1).then(p1)
.when(predicate2).then(p2)
.otherwise(defaultProcessor);
final Processor<IN, OUT> processor = selector.getProcessor();