Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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 直到函数返回,才计算Lambda_Java - Fatal编程技术网

Java 直到函数返回,才计算Lambda

Java 直到函数返回,才计算Lambda,java,Java,嗨 我有一个类似于上面的函数。传递给实体函数的lambda在函数some_函数返回之前不会计算。看起来像Java8的特性。有可能发生什么的线索吗?还有,有没有办法强制进行评估?谢谢。Lambda表达式。Funda men统计,Lambda表达式只是编写方法实现以供以后执行的较短方式。 资料来源: 实施后,您需要执行以下操作: public Resposne some_function(){ Response resp = null; try{ resp = Respon


我有一个类似于上面的函数。传递给实体函数的lambda在函数some_函数返回之前不会计算。看起来像Java8的特性。有可能发生什么的线索吗?还有,有没有办法强制进行评估?谢谢。

Lambda表达式。Funda men统计,Lambda表达式只是编写方法实现以供以后执行的较短方式。

资料来源:

实施后,您需要执行以下操作:

public Resposne some_function(){
Response resp =  null;
try{
           resp =  Response.ok().type(APPLICATION_ZIP).entity((StreamingOutput) out -> {
              //Some code here.
           }).header(CONTENT_DISPOSITION_HEADER, "ABC").build();
}catch()
{
}
return resp.
}

大概您正在使用JAX-RS的
ResponseBuilder
类型。它有一个接受
对象的方法。这种方法

在生成器中设置响应实体

响应实体的任何Java类型实例,由 可以传递运行时

你给它传递了一个对象

一种类型,可用作资源方法返回值或 当应用程序希望流式输出时,
响应中的实体。
这是一个轻量级的替代方案
javax.ws.rs.ext.MessageBodyWriter

JAX-RS将调用您的资源方法,
some_function()
,并将收到一个
响应
对象作为回报。当它有了它,它将尝试序列化它。在内部,JAX-RS实现可能有一个处理程序,它知道如何处理
StreamingOutput
实体。它所要做的就是调用它的方法



Lambda表达式求值包括创建相应函数接口的实例。在您的示例中,还没有任何代码调用该函数接口的方法。JAX-RS最终会。

您认为lambda应该在什么时候进行评估?lambda只是一个传递给
实体
方法的对象。计算时,取决于
实体
方法对其执行的操作。(通常)没有办法强迫它当场执行。如果希望立即执行,则将代码放在调用之前,而不是将其作为lambda传递。这不是在函数返回时特别执行的,而是调用函数正在执行它。我希望在完成对“resp”的赋值后立即计算lambda。在同一句话中,你似乎误解了Lambdas是什么,做什么。lambda是存储函数,但不是直接函数调用。因此,entity()对给定函数所做的一切都将是执行给定函数的原因和时间。请提供代码auf entity()函数。非常感谢。很有说服力
some_function();