首頁  >  文章  >  Java  >  java.lang.Void和void的使用方法比較

java.lang.Void和void的使用方法比較

黄舟
黄舟原創
2017-10-11 09:40:011683瀏覽

這篇文章主要介紹了java.lang.Void 與 void的比較及使用方法介紹,小編覺得挺不錯的,這裡給大家分享一下,需要的朋友可以參考。

void不是函數,是方法的修飾符,void的意思是方法沒有回傳值,意思是方法只會運行方法中的語句,但不回傳任何東西。

java.lang.Void是一種型別。例如給Void引用賦值null。


Void nil = null;

透過Void類別的程式碼可以看到,Void型別不可以繼承與實例化。


public 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型別。例如Future8742468051c85b06f0a0af9e3e506b5c用來保存結果。 Future的get方法會傳回結果(型別為T)。

但如果操作並沒有回傳值呢?這種情況下就可以用Future903bf37051cf83cbd9686768ac0189ae表示。當呼叫get後結果計算完畢則回傳後將會傳回null。
另外Void也用於無值的Map中,例如Mapbd1f348043883594477738d6b6495f86這樣map將具有Set8742468051c85b06f0a0af9e3e506b5c有相同的功能。

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

總結

#

以上是java.lang.Void和void的使用方法比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn