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

    posted on 2010-04-18 23:59 心夢帆影 閱讀(5866) 評論(0)  編輯  收藏 所屬分類: JavaSE
    主站蜘蛛池模板: 亚洲一区二区精品视频| 在线观看亚洲AV日韩AV| 亚洲免费视频网站| 亚洲av永久无码精品三区在线4| 老司机午夜在线视频免费| 99热这里有免费国产精品| 亚洲AⅤ优女AV综合久久久| 亚洲精品国产电影午夜| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 妞干网在线免费观看| 亚洲s色大片在线观看| 色噜噜噜噜亚洲第一| 黄在线观看www免费看| 亚洲国产精品成人精品无码区在线 | 黄色网址免费在线| 亚洲一区无码精品色| 中文在线免费看视频| 国产一级淫片a免费播放口之 | 色五月五月丁香亚洲综合网| 成人亚洲综合天堂| 久久久久久久久久久免费精品| 国产在线a不卡免费视频| 亚洲中文字幕久在线| 日韩激情无码免费毛片| 亚洲中文字幕无码一去台湾| 最近2022中文字幕免费视频| 国产亚洲一区二区手机在线观看| 无遮挡a级毛片免费看| 免费永久看黄在线观看app| 久久www免费人成看国产片| 亚洲高清无在码在线电影不卡 | 青青草a免费线观a| 亚洲高清免费在线观看| 99久久这里只精品国产免费| 亚洲国产日韩在线人成下载 | 大地资源免费更新在线播放| 亚洲人成人77777在线播放| 免费国产高清视频| 亚洲天堂免费在线视频| 久久久久亚洲av成人无码电影 | 亚洲中文字幕久久久一区|