本文介紹了Vert.x Java列表<;期貨&>參數化的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
前幾天,我遇到了Vert.x期貨的一個奇怪問題,它沒有破解代碼,但仍然困擾著我。
沒有參數的Future將導致以下警告:
Future是原始類型。對泛型類型Future的引用應參數化
添加參數,問題解決:
Future<YourClassName> future = ...
處理期貨列表時,您也可以很好地將其參數化:
List<Future<YourClassName>> future = ...
但CompositeFuture.all()
似乎無法處理參數列表,因此強制您刪除該參數。
有沒有辦法使期貨的參數化列表與CompositeFuture
一起工作,或者我們只是必須忽略該警告?它不會破壞任何東西,但如果找到解決方案來消除該警告仍將是件好事。
推薦答案
一方面,CompositeFuture.all()
不能與參數化期貨列表一起使用。由于類型擦除,這是開發人員做出的設計決定。
但實際上,CompositeFuture.all()
并沒有做什么特別的事情。因此,您可能有自己的帶有靜態方法的接口,這樣做也是一樣的:
interface MyCompositeFuture extends CompositeFuture {
// This is what the regular does, just for example
/*
static CompositeFuture all(List<Future> futures) {
return CompositeFutureImpl.all(futures.toArray(new Future[futures.size()]));
}
*/
static <T> CompositeFuture all(List<Future<T>> futures) {
return CompositeFutureImpl.all(futures.toArray(new Future[futures.size()]));
}
}
現在:
List<Future<String>> listFuturesT = new ArrayList<>();
// This works
MyCompositeFuture.all(listFuturesT);
List<Future> listFutures = new ArrayList<>();
// This doesnt, and that's the reason for initial design decision
MyCompositeFuture.all(listFutures);
這篇關于Vert.x Java列表<;期貨&>參數化的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,