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

java 方法泛型入?yún)和String的重載關(guān)系詳解

 更新時(shí)間:2022年02月15日 09:59:23   作者:赫雙炏  
這篇文章主要介紹了java 方法泛型入?yún)和String的重載關(guān)系詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

方法泛型入?yún)和String的重載關(guān)系

重載的基本知識(shí)不在這里討論了

重載的一個(gè)關(guān)鍵理論,如果方法名相同,參數(shù)個(gè)數(shù)、父類型、位置也相同,則調(diào)用更加特殊化一個(gè)方法。

多余的沒寫,大家可以運(yùn)行一下下面的代碼,然后理解一下就ok了。

public class TestMain {?
?? ?public static void main(String[] args) {
?? ??? ?TestMain t = new TestMain();
?? ??? ?t.func("message");
?? ??? ?t.func(new String("message"));
?? ??? ?t.func(new Object());
?? ?}
?
?? ?protected <T> void func(T data) {
?? ??? ?System.out.println("fun1" + data);
?? ?}
?
?? ?protected void func(String data) {
?? ??? ?System.out.println("fun2" + data);
?? ?}?
}

由于string和T相比較,帶有String data入?yún)⒌姆椒ǜ犹厥饣援?dāng)傳入String參數(shù)的時(shí)候,會(huì)調(diào)用第2個(gè)func。

網(wǎng)上還有關(guān)于null入?yún)⒌挠懻?,我理解是由于null入?yún)蓚€(gè)方法都可以,所以會(huì)選擇更加特殊化的方法,也就是第二個(gè)func。

這里可以試一下,定義一個(gè)Object入?yún)⒌姆椒?,編譯器會(huì)直接說與T data入?yún)⒌姆椒ㄆ缌x。

(T是一個(gè)泛型,沒有具體說明類型,這里類似于Object類型)

重載遇到泛型的問題

今天被問到一個(gè)有意思的問題,大家都知道重載的概念吧:一個(gè)類中定義同名的方法,參數(shù)表不同(參數(shù)類型,或者參數(shù)個(gè)數(shù)不通);

但是,如果是下面這個(gè)兩個(gè)方法呢

public static int fn(List<Integer> index) {?
? ?return 1;?
}?
public static String ?fn(List<String> str) {?? ?
? ?return "str";?
}?

同名的兩個(gè)方法,參數(shù)表中用到了集合,參數(shù)表里的泛型不一樣,那么到底這樣能不能編譯通過呢?

反復(fù)求證,得出以下結(jié)論

使用Sun JDK的Javac來進(jìn)行編譯會(huì)通過,而其他編譯器可能會(huì)拒絕編譯這段代碼

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

高密市| 威海市| 梁河县| 齐齐哈尔市| 紫云| 喀什市| 临邑县| 象州县| 屏东县| 鸡东县| 嵩明县| 凤冈县| 涿州市| 通许县| 防城港市| 潞城市| 青冈县| 五常市| 长宁县| 沽源县| 方山县| 大庆市| 宁津县| 石台县| 泰兴市| 惠水县| 通海县| 孝感市| 布尔津县| 犍为县| 德格县| 彝良县| 磐安县| 宜兴市| 武安市| 鹿泉市| 霍州市| 泾阳县| 新郑市| 九台市| 香港|