Void是關鍵字void的包裝類,其源碼如下:
public final class Void {
@SuppressWarnings("unchecked")
public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");
private Void() {}
}
通過上述源碼,我們可以直到:
1. Void是final類,不能繼承;
2. 構造方法爲私有方法,不能通過new來獲取。
如果我們聲明瞭一個Void類型的變量,那麼該變量只能賦值爲null.
Void nil = null;
那麼Void有哪些應用場景呢?
1. 限定方法只能返回null:
public Void test(){
return null;
}
接口中聲明返回Void的方法,其實現類中對應方法的實現只能返回null
2. 通過反射獲取返回值類型爲void的方法:
public void test2(){
Method[] declaredMethods = Hello.class.getDeclaredMethods();
List<Method> targetMethods = Arrays.stream(declaredMethods)
.filter(m -> m.getModifiers() == Modifier.PUBLIC &&
m.getReturnType().equals(Void.TYPE))
.collect(Collectors.toList());
}
這裏要注意,返回void的方法,returnType是Void.Type,返回Void的方法,returnType是Void.class.
3. 泛型中的使用:
(1)Future<Void>表示不返回值;
(2)Set<Void>表示null集合
...