2017-09-15 7 views
0

すべてのタスク(JavaFX内)が完了するタイミングを制御する先物リストを作成する必要があります。だから私は次のコードを持っています。 LINE X未解決の問題<CAP#1>は未来に変換できません<Void>?

import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Future; 
import javafx.concurrent.Task; 

... 
ExecutorService actionExecutor = ...; 
List<Future<Void>> futures = new ArrayList<Future<Void>>(); 
Task<Void> task = new Task<Void>() { 
    @Override 
    public Void call() { 
     .... 
     return null; 
    } 
}; 
Future<Void> future = actionExecutor.submit(task); //LINE X 
futures.add(future); 

私はFuture<CAP#1> cannot be converted to Future<Void>を取得します。私の間違いは何ですか?

+0

彼らは 'Future 'だとすれば、その結果に特に興味はありません。どうして 'Future 'を使用しないのですか? –

+0

@Andy Turnerご意見ありがとうございます。もちろんできます。しかし、私は自分が間違っていることを理解し、将来この間違いをしないようにしたい。 –

答えて

1

javafx.concurrent.Taskはに渡すと、Future<?>が返されます。

ExecutorService.submitFuture<Void>を返信する場合は、Callable<Void>を提出する必要があります。 actionExecutor.submit(task, null)を介して戻り値を供給してください。

また、変数タイプ/リスト要素タイプとしてFuture<?>を使用するように変更してください。

関連する問題