避免java lambda中不需要的返回值

时间:2015-08-31 17:00:15

标签: java lambda java-8

有没有办法避免此代码中的return null

@Test
public void testFrontEndPing() throws Exception {
    String url = frontEndUrl("ping");
    HttpGet httpGet = new HttpGet(url);
    httpClient.execute(httpGet, httpResponse -> {
            assertEquals(200, httpResponse.getStatusLine().getStatusCode());
            return null;
        }
    );
}

2 个答案:

答案 0 :(得分:4)

您可以编写这样的包装器方法:

static void execute(HttpClient client, HttpUriRequest request,
                    Consumer<HttpResponse> handler) {
    client.<Void>execute(request, response -> {
        handler.accept(response);
        return null;
    });
}

并像这样使用它:

execute(httpClient, httpGet, httpResponse -> 
    assertEquals(200, httpResponse.getStatusLine().getStatusCode()));

答案 1 :(得分:2)

您尝试使用的功能接口强制函数返回一个对象。因此,无论您如何编写此功能,您都必须包含'return null;'

我建议您分析代码的用途,以及根据代码的设计,您是否真的希望该方法始终返回null。