如何在Java中声明可调用以执行返回void的函数?
假设我想异步运行静态方法如何在Java中声明可调用以执行返回void的函数?,java,concurrency,future,callable,Java,Concurrency,Future,Callable,假设我想异步运行静态方法foo void foo() throws Exception {...} 由于foo引发异常,我希望创建一个Callable并调用ExecutorService.submit以获得一个未来 现在我想知道如何正确地声明那些可调用的和未来的。 我应该申报吗 Callable<Void> and Future<Void>? 可调用和未来? 我是否应该声明它们是可调用的和未来的 对 Void类似于包装类Integer,Long等。对于基本类型in
foo
void foo() throws Exception {...}
由于foo
引发异常,我希望创建一个Callable
并调用ExecutorService.submit
以获得一个未来
现在我想知道如何正确地声明那些可调用的和未来的。
我应该申报吗
Callable<Void> and Future<Void>?
可调用和未来?
我是否应该声明它们是可调用的
和未来的
对
Void
类似于包装类Integer
,Long
等。对于基本类型int
,Long
等,可以说它是Void
的包装类,尽管void
并不是一种真正的类型。我认为你应该声明它们可调用和未来
。然后,您可以根据需要实现它们,包括Callable
和Future
Yes.Callable。但是void与void不兼容,因此您必须从返回void的包装器方法调用foo()。为什么不调用callable和Future?@TomF Why not callable我不知道,这就是为什么我问为什么我遗漏了大写字母V。由于您必须返回void类型的结果,您的Callback#call()方法必须返回null。因此,由于您必须返回,您可以使用Boolean作为返回类型并返回Boolean.TRUE(或者在出现错误的情况下返回Boolean.FALSE)。所以它可能有更好的可读性。不,它在OP询问的情况下不起作用。