JDK源碼-java.lang之Void

    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集合

    ...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章