使用匿名与成员函数

时间:2017-03-20 19:32:53

标签: java asynchronous lambda java-8 completable-future

当我遇到情况时,我正在与CompletableFutures合作。让我们说我想在异步操作完成时做一些清理工作。以这种方式调用成员函数之间是否存在重要区别?为什么我会在第二个例子中选择第一个例子?

采取以下两个例子:

someAsyncOperation.apply(foo).whenComplete(MyClass::handleOperationCompletion);

对战:

someAsyncOperation.apply(foo).whenComplete((results, ex) -> handleOperationCompletion(results, ex));

从匿名函数调用静态函数,让我在本地范围内添加其他参数。在第二种情况下,我可以添加一个局部变量:

final Closeable object = new SomeCloseable();
someAsyncOperation.apply(foo).whenComplete((results, ex) -> handleOperationCompletion(results, ex, object));

我觉得如果我需要在某些对象上保持上下文来执行清理(例如关闭流),这可能会很有用,我仍然可以为它编写单元测试。我在这里失踪了吗?

0 个答案:

没有答案