gpt4 book ai didi

jsonpath 库的 java 8 lambda 技术问题

转载 作者:搜寻专家 更新时间:2023-11-01 02:57:02 25 4
gpt4 key购买 nike

我正在查找有关 lambda 的信息,但我找不到与以下函数类似的信息。它属于 class org.springframework.test.web.servlet.result.JsonPathResultMatchersResultMatcher 是一个@FunctionalInterface,结果类型为 MvcResult 和 jsonPathHelper.doesNotExist 返回无效

public ResultMatcher doesNotExist() {
return result -> jsonPathHelper.doesNotExist(getContent(result));
}

我通过以上方式调用

jsonPath("$._embedded" ).doesNotExist()

我完全不知道:

  1. 如果 jsonPathHelper.doesNotExist 返回 void 那么为什么 doesNotExist 返回 ResultMatcher。

  2. Class有什么类似result的,这个argument是从哪里来的?

谢谢

最佳答案

代码中的 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
}
};
}

if jsonPathHelper.doesNotExist return void then why doesNotExist return ResultMatcher

您的方法 doesNotExist 仅返回其自身的功能接口(interface),此后可用于调用其 match 功能。请注意,调用也将返回 void

Class has anything similar to result, where is this argument come from?

如果您查看上面的匿名类,使用 lambda 表示,result 成为 ResultMatcher 实现中的 match 方法的参数。

因此,当您真正希望访问此实现(或一般的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com