1. 程式人生 > >Java中 java.lang.Void和void 有什麼作用和區別

Java中 java.lang.Void和void 有什麼作用和區別

答:void關鍵字表示函式沒有返回結果,是java中的一個關鍵字。java.lang.Void是一種型別,例如給Void引用賦值null的程式碼為Void nil=null; 。

  通過Void類的原始碼可以看到,Void型別不可以繼承與例項化。

     final class Void {
    /**
     * The {@code Class} object representing the pseudo-type corresponding to
     * the keyword {@code void}.
     */
    @SuppressWarnings("unchecked")
    public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");

    /*
     * The Void class cannot be instantiated.
     */
    private Void() {}      Void 作為函式的返回結果表示函式返回 null (除了 null 不能返回其它型別)。    Void function(int a, int b) {
    //do something
    return null;
 }     在泛型出現之前,Void 一般用於反射之中。例如,下面的程式碼列印返回型別為 void 的方法名。     public class Test {
    public void print(String v) {}

    public static void main(String args[]){
        for(Method method : Test.class.getMethods()) {
            if(method.getReturnType().equals(Void.TYPE)) {
                System.out.println(method.getName());
            }
        }
    }
}       泛型出現後,某些場景下會用到 Void 型別。例如 Future<T> 用來儲存結果。Future 的 get 方法會返回結果(型別為 T )。

但如果操作並沒有返回值呢?這種情況下就可以用 Future<Void> 表示。當呼叫 get 後結果計算完畢則返回後將會返回 null。

另外 Void 也用於無值的 Map 中,例如 Map<T,Void> 這樣 map 將具 Set<T> 有一樣的功能。

因此當你使用泛型時函式並不需要返回結果或某個物件不需要值時候這是可以使用 java.lang.Void 型別表示。