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();