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

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

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

    隨筆-42  評論-578  文章-1  trackbacks-0

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


    然而,使用可變參數時,要注意幾個問題:

     

    1) 可變參數方法與數組參數方法重載時

     

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

    我們寫個測試代碼運行一下看看結果如何:

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

      編譯時報錯:

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

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

    可變參數==數組參數? 在帶可變參數的方法體時,讀取可變參數列表時,就是以數組的方式來讀取;

    帶可變參數的方法可以傳入一個數組參數,但帶數組參數的方法卻不能傳入可變參數。

     

     

    2) 可變參數方法與可變參數方法重載時

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

      測試代碼跟上例中一樣,編譯時報錯:

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

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

     

     

    3)可變參數方法與無參數方法重載時

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

    我們都知道,可變參數即可帶0個或者多個參數,如果帶0個參數即不帶參數時,JDK會怎么處理呢?

    那我們就以執行"mp.hello()"來測試一下。編譯通過,運行正常,調用的還帶參數的hello()方法。

    結論:當可變參數方法與不帶參數的方法重載時,JDK默認調用的是無參數的方法。若類中沒有定義無參數的方法,則會調用可變參數的方法。



    本文原創,轉載請注明出處,謝謝!http://m.tkk7.com/rongxh7(心夢帆影JavaEE技術博客)
        

    posted on 2010-04-18 23:59 心夢帆影 閱讀(5866) 評論(0)  編輯  收藏 所屬分類: JavaSE
    主站蜘蛛池模板: 在线视频免费国产成人| 91免费播放人人爽人人快乐| 日韩中文字幕在线免费观看| 亚洲日韩一中文字暮| 在线观看视频免费完整版| 精品国产成人亚洲午夜福利| 日韩av无码成人无码免费| 在线观看亚洲AV日韩AV| 免费视频中文字幕| 免费无码一区二区| 亚洲精品无码精品mV在线观看| 最近国语视频在线观看免费播放| 亚洲精品无码专区在线在线播放| 久久99热精品免费观看牛牛| 久久久亚洲裙底偷窥综合| 国国内清清草原免费视频99| 亚洲日韩一区二区三区| www国产亚洲精品久久久日本| 一级做a爰片久久毛片免费陪| 亚洲日韩中文字幕在线播放| 一级毛片全部免费播放| 77777亚洲午夜久久多喷| 好爽…又高潮了免费毛片| 午夜亚洲乱码伦小说区69堂| 亚洲最大AV网站在线观看| 97青青草原国产免费观看| 亚洲av成人一区二区三区| 国产在线观看免费完整版中文版| eeuss影院免费92242部| 老色鬼久久亚洲AV综合| 成人免费福利电影| 中国内地毛片免费高清| 亚洲一区二区三区无码国产| 国产一级一片免费播放i| 久久99青青精品免费观看| 亚洲av无码一区二区三区人妖| 国产亚洲色婷婷久久99精品91| 日本免费网站视频www区| 在线观看亚洲精品专区| 亚洲一区免费观看| 免费国产在线观看不卡|