Java中如何将Future<a>转化为Future<b>
时间: 2024-02-27 14:55:07 浏览: 85
Java JDK实例宝典
在Java中,可以使用`CompletionStage`接口的`thenApply`方法来将`Future<a>`类型的对象转化为`Future<b>`类型的对象。具体实现方法如下:
1. 首先创建一个`CompletableFuture<a>`类型的对象futureA,该对象的返回结果为类型为a的对象。
2. 创建一个函数`Function<a, b>`,该函数将类型为a的对象转化为类型为b的对象。
3. 调用`futureA.thenApply`方法,并将函数`Function<a, b>`作为参数传入。
4. `thenApply`方法会返回一个新的`CompletableFuture<b>`类型的对象,其返回结果类型为b。
示例代码如下:
```
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
class A {
int value;
public A(int value) {
this.value = value;
}
}
class B {
String value;
public B(String value) {
this.value = value;
}
}
public class Main {
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableFuture<A> futureA = CompletableFuture.completedFuture(new A(42));
CompletableFuture<B> futureB = futureA.thenApply(a -> new B(String.valueOf(a.value)));
System.out.println(futureB.get().value); // 输出:42
}
}
```
在这个示例中,我们首先创建了一个`CompletableFuture<A>`类型的对象`futureA`,其返回结果为`new A(42)`。然后,我们创建了一个函数`Function<A, B>`,该函数将`A`类型的对象转化为`B`类型的对象。接着,我们调用了`futureA.thenApply`方法,并将函数`Function<A, B>`作为参数传入,得到了一个新的`CompletableFuture<B>`类型的对象`futureB`。最后,在`futureB`上调用了`get()`方法,获取其返回结果,并将其打印出来。
需要注意的是,`CompletableFuture`是`CompletionStage`接口的一个实现类,因此在Java中也可以使用`CompletionStage`接口的其他方法来处理异步任务。
阅读全文