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

JAVA的LIST接口的REMOVE重載方法調(diào)用原理解析

 更新時(shí)間:2019年10月10日 08:28:33   作者:cartoony  
這篇文章主要介紹了JAVA的LIST接口的REMOVE重載方法調(diào)用原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

說(shuō)真的,平??丛创a都是自己看完自己懂,很少有寫(xiě)出來(lái)的沖動(dòng)。

但是在寫(xiě)算法的時(shí)候,經(jīng)常用到j(luò)ava中各種集合,其中也比較常用到remove方法。

remove有重載函數(shù),分別傳入?yún)?shù)是索引index或者數(shù)據(jù)Object(指定泛型后自動(dòng)轉(zhuǎn)換),如果指定泛型是其他數(shù)據(jù)類(lèi)型還好,但是指定的是Integer或者是int的話,或者就有點(diǎn)懵了。

這曾經(jīng)也困惑過(guò)我,所以我就唯有用實(shí)踐解惑了。

測(cè)試類(lèi)設(shè)計(jì)

測(cè)試類(lèi)一

public class Text {

 public void remove(int index){
  System.out.println("調(diào)用傳參為int的remove方法");
 }

 public void remove(Integer object){
  System.out.println("調(diào)用傳參為Integer的remove方法");
 }

 public void remove(Object object){
  System.out.println("調(diào)用傳參為Object的remove方法");
 }
}

測(cè)試類(lèi)二

public class Text {
 
 public void remove(Integer object){
  System.out.println("調(diào)用傳參為Integer的remove方法");
 }

 public void remove(Object object){
  System.out.println("調(diào)用傳參為Object的remove方法");
 }
}

測(cè)試類(lèi)三

public class Text {

 public void remove(Object object){
  System.out.println("調(diào)用傳參為Object的remove方法");
 }
}

結(jié)果

三個(gè)測(cè)試類(lèi)分別傳入int,Integer,Object型變量,觀察效果。

測(cè)試類(lèi)一

  • 傳入類(lèi)型為int:調(diào)用傳參為int的remove方法
  • 傳入類(lèi)型為Integer:調(diào)用傳參為Integer的remove方法
  • 傳入類(lèi)型為Object:調(diào)用傳參為Object的remove方法

測(cè)試類(lèi)二

  • 傳入類(lèi)型為int:調(diào)用傳參為Integer的remove方法
  • 傳入類(lèi)型為Integer:調(diào)用傳參為Integer的remove方法
  • 傳入類(lèi)型為Object:調(diào)用傳參為Object的remove方法

測(cè)試類(lèi)三

  • 傳入類(lèi)型為int:調(diào)用傳參為Object的remove方法
  • 傳入類(lèi)型為Integer:調(diào)用傳參為Object的remove方法
  • 傳入類(lèi)型為Object:調(diào)用傳參為Object的remove方法

從輸出結(jié)果可以看出,當(dāng)方法的傳參的類(lèi)層級(jí)逐漸變高時(shí),層級(jí)較低的傳參會(huì)進(jìn)行向上轉(zhuǎn)型適應(yīng)傳參的需要。

原因分析

下面我們先反編譯各測(cè)試類(lèi)的源碼,結(jié)果如下

測(cè)試類(lèi)一

invokevirtual #11 // Method remove:(I)V

invokevirtual #15 // Method remove:(Ljava/lang/Integer;)V

invokevirtual #18 // Method remove:(Ljava/lang/Object;)V

測(cè)試類(lèi)二

invokevirtual #11 // Method remove:(Ljava/lang/Integer;)V

invokevirtual #11 // Method remove:(Ljava/lang/Integer;)V

invokevirtual #17 // Method remove:(Ljava/lang/Object;)V

測(cè)試類(lèi)三

invokevirtual #10 // Method remove:(Ljava/lang/Object;)V

invokevirtual #10 // Method remove:(Ljava/lang/Object;)V

invokevirtual #10 // Method remove:(Ljava/lang/Object;)V

可以看出,反編譯代碼中都是調(diào)用實(shí)例方法的命令,所以結(jié)果中自動(dòng)"向上轉(zhuǎn)型"其實(shí)是jvm的功勞。jvm通過(guò)在編譯時(shí)確定調(diào)用的傳參類(lèi)型,靜態(tài)分派到具體方法的。

所以在前言中的困惑已經(jīng)解除了,就是由于jvm中靜態(tài)分派的實(shí)現(xiàn),調(diào)用次序是int->Integer->Object。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java通過(guò)導(dǎo)出超大Excel文件解決內(nèi)存溢出問(wèn)題

    Java通過(guò)導(dǎo)出超大Excel文件解決內(nèi)存溢出問(wèn)題

    導(dǎo)出excel是咱Java開(kāi)發(fā)的必備技能,下面這篇文章主要給大家介紹了關(guān)于Java通過(guò)導(dǎo)出超大Excel文件解決內(nèi)存溢出問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • springboot內(nèi)置tomcat之NIO處理流程一覽

    springboot內(nèi)置tomcat之NIO處理流程一覽

    這篇文章主要介紹了springboot內(nèi)置tomcat之NIO處理流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 詳細(xì)盤(pán)點(diǎn)Java中鎖的分類(lèi)

    詳細(xì)盤(pán)點(diǎn)Java中鎖的分類(lèi)

    這篇文章主要介紹了詳細(xì)盤(pán)點(diǎn)Java中鎖的分類(lèi),Java中的鎖是一種多線程編程中的同步機(jī)制,用于控制線程對(duì)共享資源的訪問(wèn),防止并發(fā)訪問(wèn)時(shí)的數(shù)據(jù)競(jìng)爭(zhēng)和死鎖問(wèn)題,需要的朋友可以參考下
    2023-08-08
  • 前后端項(xiàng)目分離解決cors錯(cuò)誤的方法詳解

    前后端項(xiàng)目分離解決cors錯(cuò)誤的方法詳解

    隨著前后端分離技術(shù)的越來(lái)越盛行,跨域問(wèn)題也逐漸凸顯了出來(lái),下面這篇文章主要給大家介紹了關(guān)于前后端項(xiàng)目分離解決cors錯(cuò)誤的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Spring Cloud @RefreshScope 原理及使用

    Spring Cloud @RefreshScope 原理及使用

    這篇文章主要介紹了Spring Cloud @RefreshScope 原理及使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 如何構(gòu)建可重復(fù)讀取inputStream的request

    如何構(gòu)建可重復(fù)讀取inputStream的request

    這篇文章主要介紹了如何構(gòu)建可重復(fù)讀取inputStream的request,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Intellij IDEA如何去掉@Autowired 注入警告的方法

    Intellij IDEA如何去掉@Autowired 注入警告的方法

    這篇文章主要介紹了Intellij IDEA如何去掉@Autowired 注入警告的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • JAVA代碼調(diào)用ffmpeg程序進(jìn)行視頻轉(zhuǎn)碼和推流方式

    JAVA代碼調(diào)用ffmpeg程序進(jìn)行視頻轉(zhuǎn)碼和推流方式

    本文介紹了如何通過(guò)Java代碼調(diào)用FFmpeg進(jìn)行多媒體視頻處理,包括兩種方式:使用第三方封裝的jar包和使用ProcessBuilder類(lèi)創(chuàng)建進(jìn)程,兩種方式各有優(yōu)缺點(diǎn),選擇時(shí)需根據(jù)具體需求和場(chǎng)景
    2025-02-02
  • Springboot打印接口的三種方式分享

    Springboot打印接口的三種方式分享

    這篇文章主要為大家詳細(xì)介紹了Springboot打印接口的三種方式:aop切面的方式、過(guò)濾器的方式和攔截器的方式,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • 詳解Java數(shù)據(jù)結(jié)構(gòu)之平衡二叉樹(shù)

    詳解Java數(shù)據(jù)結(jié)構(gòu)之平衡二叉樹(shù)

    平衡二叉樹(shù)(Balanced?Binary?Tree)又被稱(chēng)為AVL樹(shù)(有別于AVL算法),且具有以下性質(zhì):它是一?棵空樹(shù)或它的左右兩個(gè)子樹(shù)的高度差的絕對(duì)值不超過(guò)1,并且左右兩個(gè)子樹(shù)都是一棵平衡二叉樹(shù)。本文將詳解介紹一下平衡二叉樹(shù)的原理與實(shí)現(xiàn),需要的可以參考一下
    2022-02-02

最新評(píng)論

田林县| 榆树市| 吉水县| 大新县| 马公市| 柘城县| 双桥区| 达拉特旗| 临泉县| 巫溪县| 淮南市| 获嘉县| 易门县| 邢台市| 伽师县| 屯门区| 平潭县| 怀远县| 柘荣县| 定结县| 睢宁县| 蒙城县| 葵青区| 栾川县| 沐川县| 清新县| 东乌珠穆沁旗| 金门县| 巨鹿县| 开封市| 广南县| 霸州市| 阿拉善盟| 永吉县| 普格县| 曲阳县| 德惠市| 渝北区| 胶州市| 高淳县| 闻喜县|