<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://www.tkk7.com/rongxh7(心夢(mèng)帆影JavaEE技術(shù)博客)
        

    posted on 2010-04-18 23:59 心夢(mèng)帆影 閱讀(5868) 評(píng)論(0)  編輯  收藏 所屬分類: JavaSE
    主站蜘蛛池模板: 国产午夜无码视频免费网站| 91在线视频免费播放| 国产精品免费无遮挡无码永久视频 | 四色在线精品免费观看| 免费国产高清视频| 国产av无码专区亚洲av果冻传媒 | 久久综合图区亚洲综合图区| 久久久久亚洲精品天堂| 中文字幕无码精品亚洲资源网久久 | 亚洲av永久无码精品秋霞电影影院| 亚洲熟妇色自偷自拍另类| 国产精品亚洲小说专区| 怡红院免费全部视频在线视频| 永久在线免费观看| 免费国产小视频在线观看| 亚洲欧洲∨国产一区二区三区| 亚洲国产综合第一精品小说| 黄色免费网址大全| 特级无码毛片免费视频尤物| 日韩高清免费在线观看| 亚洲日韩中文字幕在线播放| 亚洲一区二区三区在线观看蜜桃 | 中国一级特黄高清免费的大片中国一级黄色片 | 免费福利电影在线观看| 免费看美女被靠到爽| 亚洲热妇无码AV在线播放| 久久亚洲最大成人网4438| 国产99视频精品免费视频76| 日本XXX黄区免费看| 亚洲色偷偷综合亚洲AV伊人| 亚洲精品亚洲人成在线观看麻豆| 国产成人亚洲精品播放器下载| 免费精品一区二区三区第35| 免费激情视频网站| 亚洲一卡2卡三卡4卡有限公司| 亚洲日韩AV无码一区二区三区人| 光棍天堂免费手机观看在线观看 | 久久亚洲国产午夜精品理论片| 亚洲大码熟女在线观看| 免费A级毛片无码专区| 亚洲日本在线观看视频|