Java 中,大家对 void 应该是相当熟悉了。它表示“空”,所有无返回值的方法都使用它表示返回类型。
public static void main(String[] args) {
// ...
}
void 是一种基本数据类型。
而 Void 是 void 封装类型,API 上称其为“占位符(placeholder)”。
看起来,Void 之于 void 类似于 Integer 之于 int。但并非如此,Void 比较特别:
- 它不可实例化
- 它没有内置的类型实例,也没有可用的字面值
声明一个 Void 变量通常是没有什么意义的,因为没有可为其赋值的实例,注意不能用 void 为其赋值(void 是类型而不是值)。
Void 变量唯一能持有的是 null。
Void 一个可用的地方是反射判断方法的返回值时,比如:
if(m.getReturnType().equals(Void.TYPE)) {
// 处理返回值为 void 的方法
}
但也不是必需使用Void.TYPE
,也可以用void.class
。
另外的使用场景一般都和泛型相关,可以参考这里的相关说明。通常也只是提高了代码的可读性。
总结来说,几乎很少会用到 Void 。