在Java 8中,我正在编写一个DAO方法,它调用一个返回ListenableFuture的方法(在这种情况下,它是一个返回ResultSetFuture的Cassandra异步查询)。如何在Java中返回自己的期货?
但是,我被困在我应该如何返回到DAO方法的调用者的未来。我不能只返回ResultSetFuture,因为这将来会返回一个ResultSet。我想处理ResultSet并返回一个不同的对象。例如:
public ListenableFuture<ThingObj> queryForThingAsync(String thingId) {
ListenableFuture<ResultSet> rsFuture = db.getSession().executeAsync(QueryBuilder.select().all().from("thingSchema","Thing").where(eq("thingId",thingId)));
// Now what? How do I create a ListenableFuture<ThingObj> given a ListenableFuture<ResultSet> and a method that can convert a ResultSet into a ThingObj?
}
你使用的是Java并发8种,或番石榴?番石榴有一个'ListenableFuture'类型,JDK没有。 –
Cassandra api返回一个ListenableFuture,但我很乐意使用Java 8并发类型。我没有注意到ListenableFuture来自番石榴。我现在意识到CompletableFuture可能是适合使用的类。即便如此,我仍然不确定如何去做。 – HappyEngineer
好的 - 我会更新我的答案,以包含使用'CompletableFuture'的备用解决方案。 –