最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

先通過源碼查看下

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 關(guān)鍵字的包裝類。

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

Void 使用

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

示例如下:

public Void test() { 
  return null;
}

使用場(chǎng)景一:

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

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

使用場(chǎng)景二:

通過反射獲取所有返回值為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關(guān)鍵字表示函數(shù)沒有返回結(jié)果,是java中的一個(gè)關(guān)鍵字。

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

Void nil = null;

通過Void類的代碼可以看到,Void類型不可以繼承與實(shí)例化。

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)后,某些場(chǎng)景下會(huì)用到Void類型。例如Future<T>用來保存結(jié)果。Future的get方法會(huì)返回結(jié)果(類型為T)。

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

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

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

總結(jié)

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

相關(guān)文章

  • java File類的基本使用方法總結(jié)

    java File類的基本使用方法總結(jié)

    這篇文章主要介紹了java File類的基本使用方法總結(jié),為大家分享了java實(shí)現(xiàn)上傳代碼,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 深入了解JAVA 軟引用

    深入了解JAVA 軟引用

    這篇文章主要介紹了JAVA 軟引用的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Spring MVC保證Controller并發(fā)安全的方法小結(jié)

    Spring MVC保證Controller并發(fā)安全的方法小結(jié)

    在 Spring MVC 中,默認(rèn)情況下,@Controller 是單例的,這意味著所有請(qǐng)求共享一個(gè) Controller 實(shí)例,為確保并發(fā)安全,Spring 并不會(huì)自動(dòng)對(duì) Controller 進(jìn)行線程安全保護(hù),本文給大家介紹了Spring MVC保證Controller并發(fā)安全的方法,需要的朋友可以參考下
    2024-11-11
  • Spring中Service注入多個(gè)實(shí)現(xiàn)類的方法詳解

    Spring中Service注入多個(gè)實(shí)現(xiàn)類的方法詳解

    這篇文章主要介紹了Spring中Service注入多個(gè)實(shí)現(xiàn)類的方法詳解,Spring是一個(gè)開源的Java框架,用于構(gòu)建企業(yè)級(jí)應(yīng)用程序,它提供了許多功能,如依賴注入、面向切面編程、數(shù)據(jù)訪問、Web開發(fā)等,需要的朋友可以參考下
    2023-07-07
  • Java異步判斷線程池所有任務(wù)是否執(zhí)行完成的操作方法

    Java異步判斷線程池所有任務(wù)是否執(zhí)行完成的操作方法

    這篇文章主要介紹了Java異步判斷線程池所有任務(wù)是否執(zhí)行完成的方法,在這個(gè)示例中,我使用了傳統(tǒng)的匿名內(nèi)部類來創(chuàng)建Callable任務(wù)(同時(shí)也提供了Lambda表達(dá)式的注釋),以便與各種Java版本兼容,需要的朋友可以參考下
    2024-07-07
  • SpringBoot整合ActiveMQ的詳細(xì)步驟

    SpringBoot整合ActiveMQ的詳細(xì)步驟

    昨天仔細(xì)研究了activeMQ消息隊(duì)列,也遇到了些坑,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合ActiveMQ的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 淺談線程通信wait,notify作用

    淺談線程通信wait,notify作用

    這篇文章主要介紹了淺談線程通信wait,notify作用,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Java如何實(shí)現(xiàn)密碼加密

    Java如何實(shí)現(xiàn)密碼加密

    這篇文章主要介紹了Java如何實(shí)現(xiàn)密碼加密,幫助大家更好的理解和學(xué)習(xí)java,感興趣的朋友可以了解下
    2020-08-08
  • Spring Security的簡(jiǎn)單使用

    Spring Security的簡(jiǎn)單使用

    這篇文章主要介紹了Spring Security的簡(jiǎn)單使用,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下
    2021-04-04
  • MyBatis逆向工程的創(chuàng)建和使用

    MyBatis逆向工程的創(chuàng)建和使用

    這篇文章主要介紹了MyBatis逆向工程的創(chuàng)建和使用,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

获嘉县| 东明县| 巴彦县| 芦山县| 博湖县| 和硕县| 贵定县| 陇西县| 蓬溪县| 湘阴县| 焦作市| 铜山县| 沙田区| 福贡县| 易门县| 宁南县| 邵东县| 哈尔滨市| 桐乡市| 淮南市| 句容市| 常熟市| 罗城| 甘德县| 黄冈市| 武川县| 湛江市| 宁河县| 衡阳县| 阿合奇县| 罗山县| 吉木乃县| 许昌市| 中宁县| 图们市| 喀喇沁旗| 连山| 长泰县| 通道| 阜新市| 登封市|