1
2
3
4
5
6
7
8
9
public final class Void {

@SuppressWarnings("unchecked")
public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");

private Void() {
}

}

Void 类是一个不可实例化的占位符类,用于泛型,特别是当一个方法需要使用泛型但不返回任何有用值的时候。

它属于 java.lang 包,与小写的 void 关键字不同,后者是用于表示没有返回值的方法的返回类型。

Void 类的主要用途如下:

  • 泛型中的应用:当需要在泛型中表达泛型的位置不需要具体的类型或方法不会返回有意义的值时,可以使用 Void。例如,在使用回调或者异步编程模式(如 Java 的 Callable<V> 或者 FutureTask<V> 接口)时,如果某个任务执行完毕后并不需要返回结果,则可以用 Void 作为泛型参数的类型。
  • 反射机制:虽然不是直接相关,但在反射操作中,如果想要获取或检查返回类型为 void 的方法,可以使用 Void.TYPE 来代表这个原始类型 void

Void 类不能被实例化,因为它没有公开的构造函数。

通常情况下,null 是唯一有效的 Void 类型的实例引用,像下面这样,不会编译失败:

1
Void voidObj = null;

这是因为 Void 类的目的是为了在泛型中使用,而不是为了创建对象实例。通过这种方式,Void 提供了一种方式来标记那些本质上不打算持有任何特定数据类型的泛型结构。

1
System.out.println(Void.TYPE);

上面的代码输出如下:

1
void

相关链接

OB tags

#Java