假设API方法返回ListenableFuture<T>
,并且返回值实现为SettableFuture<T>
。有没有一种方法可以返回不能被返回到SettableFuture并由行为不端的客户端完成的“ ListenableFuture”?
因此,为ListenableFuture的只读视图。与使用.unmodifiableCollection
包装集合类似。
最佳答案
最简单的方法可能是:return Futures.transform(future, x -> x);
请注意,就人们可以cancel
而言,未来仍然是“可写的”。如果您想阻止用户甚至取消原定的未来-我认为您对此并不在意,但是由于您说的是“只读”,因此无论如何我都希望将其提起-您可以使用:return Futures.nonCancellationPropagating(future);