1)在Java中,我可以这样做:
Void z = null;
Run Code Online (Sandbox Code Playgroud)
除了null我可以指定之外还有其他值z吗?
2)考虑以下代码剪切:
Callable<Void> v = () -> {
System.out.println("zzz");
Thread.sleep(1000);
return null;
};
Run Code Online (Sandbox Code Playgroud)
这编译好了,但是如果我删除最后一个语句return null;则没有.为什么?毕竟,Void应该意味着没有回报价值.
来自文档:
Void类是一个不可实例化的占位符类,用于保存对表示Java关键字void的Class对象的引用.
所以,没有.
Void 由必须返回一个对象的方法使用,但实际上什么也没有返回.
在任务完成后您不需要返回任何对象的情况下,可以通过在Android中使用AsyncTask来观察到一个不错的示例.
然后你会扩展AsyncTask<[your params type], [your progress type], Void>,并null在你的onPostExecute覆盖中返回.
在大多数情况下你不需要它(例如,Runnable通常比它更合适Callable<Void>).
更具体地回答您的问题:
但是,如果我删除返回null它不编译?!为什么?
...因为a Void仍然是一个对象.但是,它只能有价值null.
如果你的方法声明它返回Void,你需要(显式)返回null.
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |