我正在查找有关lambda的信息,尽管找不到类似于以下函数的内容。它属于类org.springframework.test.web.servlet.result.JsonPathResultMatchers ,而 ResultMatcher 是@FunctionalInterface,结果是 MvcResult 和jsonPathHelper.doesNotExist返回void
public ResultMatcher doesNotExist() {
return result -> jsonPathHelper.doesNotExist(getContent(result));
}
我打通以上电话
jsonPath("$._embedded" ).doesNotExist()
我真的不知道:
如果jsonPathHelper.doesNotExist返回void,那么为什么NotExist返回ResultMatcher。
类具有与结果类似的任何东西,该参数来自何处?
谢谢
答案 0 :(得分:3)
您的代码中的lambda:
result -> jsonPathHelper.doesNotExist(getContent(result));
只是ResultMatcher
的一种表示形式。您可以像看它一样:
FunctionalInterface
如果jsonPathHelper.doesNotExist返回void,为什么不这样做 返回ResultMatcher
您的方法public ResultMatcher doesNotExist() {
return new ResultMatcher() {
@Override
public void match(MvcResult result) throws Exception {
jsonPathHelper.doesNotExist(getContent(result)); // returns void
}
};
}
仅返回其本身的功能接口,此后可用于调用其doesNotExist
函数。请注意,调用也将返回match
。
类与结果有任何相似之处,该参数在哪里 来自?
如果您查看上面的匿名类,以lambda表示,则void
成为result
实现中match
方法的参数。
因此,当您实际上希望访问此实现时(或通常访问ResultMatcher
),可以按以下方式调用该方法(简化的初始化):
ResultMatcher