gpt4 book ai didi

Java Void 类型 - 可能/允许的值?

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:44 25 4
gpt4 key购买 nike

1) 在 Java 中,我可以这样做:

Void z = null;

除了null我可以分配给z之外还有其他值吗?

2) 考虑以下代码片段:

Callable<Void> v = () -> {
System.out.println("zzz");
Thread.sleep(1000);
return null;
};

这可以编译,但如果我删除最后一条语句 return null; 它不会。为什么?毕竟,Void 应该意味着没有返回值。

最佳答案

来自docs :

The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.

所以,

Void由必须返回对象但实际上什么也不返回的方法使用。

使用 AsyncTask 可以观察到一个不错的例子在 Android 中,在任务完成后不需要返回任何对象的情况下。

然后您将扩展 AsyncTask<[your params type], [your progress type], Void> , 并返回 null在你的onPostExecute覆盖。

虽然在大多数情况下您不需要它(例如,Runnable 通常比 Callable<Void> 更合适)。

更具体地回答您的问题:

But if I remove the return null it does not compile?! Why?

... 因为 Void仍然是一个对象。但是,它的值只能是null。 .

如果您的方法声明它返回 Void ,您需要(明确地)返回 null .

关于Java Void 类型 - 可能/允许的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34791212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com