[英]Guava CheckedFuture<X,Y> map to CheckedFuture <Z,Y> without blocking
最近,我遇到了番石榴及其異步未來API。
我有一個與此聲明類似的方法:
CheckedFuture<X, Y> update(final X entry)
在某個時候可能會調用具有以下簽名的方法:
CheckedFuture<Boolean, Y> delete(final X entry)
我一直在尋找並沒有找到的方法是一種將要delete
的調用的結果映射到映射到CheckedFuture<X, Y>
,這是update
的返回類型。
有沒有人能夠通過調用delete(entry).checkedGet()
而做到這一點而不會阻塞整個計算?
任何幫助表示贊賞。
注意:我知道Guava javadocs建議避免使用CheckedFutures,但是atm這是API的構建方式,並且重建它是不切實際的(不意味着我不期待它!:)
您可以使用Futures#transform
CheckedFuture<X, Y> update(final X entry) {
CheckedFuture<Boolean, Y> f = delete(entry);
ListenableFuture<X> tr = Futures.transform(f, (Function<Boolean, X>) input -> entry);
return Futures.makeChecked(tr, input -> (Y) input.getCause());
}
CheckedFuture<Boolean, Y> delete(final X entry) {
return Futures.immediateFailedCheckedFuture(new Y());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.