<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-42  評(píng)論-578  文章-1  trackbacks-0

    JDK1.5引進(jìn)了方法的可變參數(shù),受到許多開發(fā)人員的青睞。有了這種機(jī)制,我們可以寫出類似于JavaScript的arguments那樣的帶任意多個(gè)參數(shù)的方法。Java的可變參數(shù),可用于普通方法上,也可以用于構(gòu)造方法上,大大增大了我們所寫方法的適用范圍。


    然而,使用可變參數(shù)時(shí),要注意幾個(gè)問(wèn)題:

     

    1) 可變參數(shù)方法與數(shù)組參數(shù)方法重載時(shí)

     

    public class MethodParams{
    //帶可變參數(shù)的方法
    public void hello(String ...params) {
    System.out.println("執(zhí)行帶可變參數(shù)的方法,參數(shù)個(gè)數(shù)為:" + params.length);
    }
    //帶數(shù)組參數(shù)的方法
    public void hello(String[] params) {
    System.out.println("執(zhí)行帶數(shù)組參數(shù)的方法,數(shù)組長(zhǎng)度為:" + params.length);
    }
    }

    我們寫個(gè)測(cè)試代碼運(yùn)行一下看看結(jié)果如何:

    	MethodParams mp = new MethodParams();
    mp.hello("AAA","BBB","CCC");

      編譯時(shí)報(bào)錯(cuò):

    MethodParams.java:7: 無(wú)法在 MethodParams 中同時(shí)聲明 hello(java.lang.String[]) 和
    hello(java.lang.String...)
    public void hello(String[] params) {
    ^
    1 錯(cuò)誤

    結(jié)論: JDK不允許存在, 帶可變參數(shù)的方法和帶數(shù)組參數(shù)的方法在同一類中重載。

    可變參數(shù)==數(shù)組參數(shù)? 在帶可變參數(shù)的方法體時(shí),讀取可變參數(shù)列表時(shí),就是以數(shù)組的方式來(lái)讀取;

    帶可變參數(shù)的方法可以傳入一個(gè)數(shù)組參數(shù),但帶數(shù)組參數(shù)的方法卻不能傳入可變參數(shù)。

     

     

    2) 可變參數(shù)方法與可變參數(shù)方法重載時(shí)

    	//帶可變參數(shù)的方法
    public void hello(String ...params) {
    System.out.println("執(zhí)行帶可變參數(shù)的方法,參數(shù)個(gè)數(shù)為:" + params.length);
    }
    //帶固定參數(shù)和可變參數(shù)
    public void hello(String param1, String ...params) {
    System.out.println("執(zhí)行帶固定參數(shù)和可變參數(shù)的方法,參數(shù)個(gè)數(shù)為:" + params.length);
    }

      測(cè)試代碼跟上例中一樣,編譯時(shí)報(bào)錯(cuò):

    MethodParams.java:18: 對(duì) hello 的引用不明確,MethodParams 中的 方法 hello(java.l
    ang.String...) 和 MethodParams 中的 方法 hello(java.lang.String,java.lang.String
    ...) 都匹配
    mp.hello("AAA","BBB","CCC");
    ^
    1 錯(cuò)誤

     結(jié)論:JDK不允許存在,帶相同參數(shù)類型列表(Type List)的參數(shù)列表的方法在同一類中重載。

     

     

    3)可變參數(shù)方法與無(wú)參數(shù)方法重載時(shí)

    	//帶可變參數(shù)的方法
    public void hello(String ...params) {
    System.out.println("執(zhí)行帶可變參數(shù)的方法,參數(shù)個(gè)數(shù)為:" + params.length);
    }
    //不帶參數(shù)的方法
    public void hello() {
    System.out.println("執(zhí)行不帶參數(shù)的方法");
    }

    我們都知道,可變參數(shù)即可帶0個(gè)或者多個(gè)參數(shù),如果帶0個(gè)參數(shù)即不帶參數(shù)時(shí),JDK會(huì)怎么處理呢?

    那我們就以執(zhí)行"mp.hello()"來(lái)測(cè)試一下。編譯通過(guò),運(yùn)行正常,調(diào)用的還帶參數(shù)的hello()方法。

    結(jié)論:當(dāng)可變參數(shù)方法與不帶參數(shù)的方法重載時(shí),JDK默認(rèn)調(diào)用的是無(wú)參數(shù)的方法。若類中沒有定義無(wú)參數(shù)的方法,則會(huì)調(diào)用可變參數(shù)的方法。



    本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!http://m.tkk7.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)
        

    posted on 2010-04-18 23:59 心夢(mèng)帆影 閱讀(5868) 評(píng)論(0)  編輯  收藏 所屬分類: JavaSE
    主站蜘蛛池模板: 亚洲H在线播放在线观看H| 亚洲人成色777777老人头| 国产午夜亚洲精品国产| 暖暖免费中文在线日本| 8090在线观看免费观看| 国产国产人免费视频成69大陆| 国产亚洲综合久久系列| 日本亚洲色大成网站www久久| 久久成人永久免费播放| 久久久久久国产a免费观看黄色大片 | 高潮毛片无遮挡高清免费| 久久亚洲免费视频| 免费国产在线观看不卡| 亚洲尹人香蕉网在线视颅| 国产成人亚洲综合无| aⅴ免费在线观看| 亚洲综合色区在线观看| 色偷偷女男人的天堂亚洲网| 国产线视频精品免费观看视频| 免费一本色道久久一区| 亚洲成AV人在线观看天堂无码| 日韩亚洲翔田千里在线| 国产四虎免费精品视频| 亚洲一区无码精品色| 亚洲综合av一区二区三区不卡| 永久免费不卡在线观看黄网站| 四虎在线播放免费永久视频 | 夜夜爽妓女8888视频免费观看| 波多野结衣在线免费观看| 亚洲午夜福利精品久久 | 亚洲真人无码永久在线观看| 久久这里只精品99re免费| 亚洲国产成人a精品不卡在线| 亚洲视频在线观看2018| 无码国产精品一区二区免费式芒果 | vvvv99日韩精品亚洲| 国产精品高清视亚洲一区二区| 十九岁在线观看免费完整版电影| 亚洲男人天堂2020| 亚洲AV成人精品日韩一区| 67194熟妇在线永久免费观看|