Как объявить Callable для выполнения функции, возвращающей void в Java?

Предположим, что я хотел бы запустить статический метод foo асинхронно

void foo() throws Exception {...} 

Так как foo выбрасывает исключение, я бы предпочел создать Callable и вызвать ExecutorService.submit с ним, чтобы получить Future.

Теперь мне интересно, как правильно объявить те Callable и Future. Должен ли я объявить их

Callable<Void> and Future<Void>?

Ответы

Ответ 1

Должен ли я объявить их Callable<Void> и Future<Void>?

Да.

Void похож на классы-оболочки Integer, Long и т.д. для примитивных типов int, Long и т.д. Вы можете сказать, что это класс-оболочка для Void, хотя Void не является типом.

Ответ 2

Я думаю, вы должны объявить их Callable<?> и Future<?>. Затем вы можете реализовать их в любом случае, включая Callable<Void> и Future<Void>.