我正在查找有关 lambda 的信息,尽管我无法找到类似于以下函数的内容。它属于 org.springframework.test.web.servlet.result.JsonPathResultMatchers 类,ResultMatcher 是一个@FunctionalInterface,result 是 MvcResult 类型,jsonPathHelper.doesNotExist 返回 void
public ResultMatcher doesNotExist() {
return result -> jsonPathHelper.doesNotExist(getContent(result));
}
我调用上面一个通过
jsonPath("$._embedded" ).doesNotExist()
我真的不知道:
谢谢
最佳答案
代码中的 lambda:
result -> jsonPathHelper.doesNotExist(getContent(result));
只是
ResultMatcher
的表示,因为它是 FunctionalInterface
。你可以这样看:public ResultMatcher doesNotExist() {
return new ResultMatcher() {
@Override
public void match(MvcResult result) throws Exception {
jsonPathHelper.doesNotExist(getContent(result)); // returns void
}
};
}
您的方法
doesNotExist
仅返回功能接口(interface)本身,此后可用于调用其 match
函数。请注意,调用也会返回 void
。如果您查看上面的匿名类,使用 lambda 表示,
result
将成为 match
实现中 ResultMatcher
方法的参数。因此,当您确实希望访问此实现(或一般的
ResultMatcher
)时,您可以按如下方式调用该方法(简化初始化):ResultMatcher resultMatcher = doesNotExist(); // your method returns here
MvcResult result = new MvcResult(); // some MvcResult object
resultMatcher.match(result); // actual invocation
关于jsonpath 库的 java 8 lambda 技术问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54083561/