亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java.lang.Void類的解析與使用詳解

 更新時間:2017年12月21日 08:56:10   作者:jijs  
這篇文章主要介紹了java.lang.Void類的解析與使用詳解,文中涉及到了java.lang.integer類的源碼,分場景給大家介紹的非常詳細,給大家補充介紹java.lang.Void 與 void的比較及使用,需要的朋友可以參考下

今天在查看源碼的時候發(fā)現(xiàn)了 java.lang.Void 的類。這個有什么作用呢?

先通過源碼查看下

package java.lang;
/**
 * The {@code Void} class is an uninstantiable placeholder class to hold a
 * reference to the {@code Class} object representing the Java keyword
 * void.
 *
 * @author unascribed
 * @since  JDK1.1
 */
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() {}
}

從源碼中發(fā)現(xiàn)該類是final的,不可繼承,并且構(gòu)造是私有的,也不能 new。

那么該類有什么作用呢?

下面是我們先查看下 java.lang.Integer 類的源碼

我們都知道 int 的包裝類是 java.lang.Integer

 

從這可以看出 java.lang.Integer 是 int 的包裝類。

同理,通過如下 java.lang.Void 的源碼可以看出 java.lang.Void 是 void 關鍵字的包裝類。

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

Void 使用

Void類是一個不可實例化的占位符類,如果方法返回值是Void類型,那么該方法只能返回null類型。

示例如下:

public Void test() { 
  return null;
}

使用場景一:

Future<Void> f = pool.submit(new Callable() {
  @Override
  public Void call() throws Exception {
    ......
    return null;
  }
    
});

比如使用 Callable接口,該接口必須返回一個值,但實際執(zhí)行后沒有需要返回的數(shù)據(jù)。 這時可以使用Void類型作為返回類型。

使用場景二:

通過反射獲取所有返回值為void的方法。

public class Test {
  public void hello() { }
  public static void main(String args[]) {
    for (Method method : Test.class.getMethods()) {
      if (method.getReturnType().equals(Void.TYPE)) {
        System.out.println(method.getName());
      }
    }
  }
}

執(zhí)行結(jié)果:

main
hello
wait
wait
wait
notify
notifyAll

ps:下面介紹java.lang.Void 與 void的比較及使用

void關鍵字表示函數(shù)沒有返回結(jié)果,是java中的一個關鍵字。

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作為函數(shù)的返回結(jié)果表示函數(shù)返回null(除了null不能返回其它類型)。

 Void function(int a, int b) {
  //do something
  return null;
 }

在泛型出現(xiàn)之前,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());
      }
    }
  }
}

泛型出現(xiàn)后,某些場景下會用到Void類型。例如Future<T>用來保存結(jié)果。Future的get方法會返回結(jié)果(類型為T)。

但如果操作并沒有返回值呢?這種情況下就可以用Future<Void>表示。當調(diào)用get后結(jié)果計算完畢則返回后將會返回null。

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

因此當你使用泛型時函數(shù)并不需要返回結(jié)果或某個對象不需要值時候這是可以使用java.lang.Void類型表示。

總結(jié)

以上所述是小編給大家介紹的java.lang.Void的類 解析與使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • 詳解Java使用Jsch與sftp服務器實現(xiàn)ssh免密登錄

    詳解Java使用Jsch與sftp服務器實現(xiàn)ssh免密登錄

    這篇文章主要介紹了詳解Java使用Jsch與sftp服務器實現(xiàn)ssh免密登錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • SpringBoot整合Freemarker的基本步驟

    SpringBoot整合Freemarker的基本步驟

    這篇文章主要介紹了SpringBoot整合Freemarker的基本步驟,添加依賴及添加相關配置的實例代碼詳解,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Java中spring讀取配置文件的幾種方法示例

    Java中spring讀取配置文件的幾種方法示例

    本篇文章中主要介紹了Java中spring讀取配置文件的幾種方法示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Java執(zhí)行可執(zhí)行文件的三種方法詳解

    Java執(zhí)行可執(zhí)行文件的三種方法詳解

    這篇文章主要為大家詳細介紹了Java中執(zhí)行可執(zhí)行文件的三種方法,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以參考一下
    2024-02-02
  • springboot實現(xiàn)定時器(一看即會,非常簡單)

    springboot實現(xiàn)定時器(一看即會,非常簡單)

    這篇文章主要介紹了springboot實現(xiàn)定時器(一看即會,非常簡單),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java線程通信詳解

    Java線程通信詳解

    本篇文章主要介紹了Java線程通信問題,線程通信用來保證線程協(xié)調(diào)運行,有需要的朋友可以了解一下。
    2016-10-10
  • Spring Boot中RabbitMQ自動配置的介紹、原理和使用方法

    Spring Boot中RabbitMQ自動配置的介紹、原理和使用方法

    本文介紹了Spring Boot中RabbitMQ自動配置的介紹、原理和使用方法,通過本文的介紹,我們希望讀者能夠更好地理解Spring Boot中RabbitMQ的使用方法,并在項目中更加靈活地應用,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • java?并發(fā)線程個數(shù)的如何確定

    java?并發(fā)線程個數(shù)的如何確定

    這篇文章主要介紹了java?并發(fā)線程個數(shù)的如何確定,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JVM內(nèi)存管理之JAVA語言的內(nèi)存管理詳解

    JVM內(nèi)存管理之JAVA語言的內(nèi)存管理詳解

    下面小編就為大家?guī)硪黄狫VM內(nèi)存管理之JAVA語言的內(nèi)存管理詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java開發(fā)之Spring連接數(shù)據(jù)庫方法實例分析

    Java開發(fā)之Spring連接數(shù)據(jù)庫方法實例分析

    這篇文章主要介紹了Java開發(fā)之Spring連接數(shù)據(jù)庫方法,以實例形式較為詳細的分析了Java Spring開發(fā)中針對數(shù)據(jù)庫的相關操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10

最新評論