java如何實現不固定個數傳參


CreateTime--2017年9月15日14:42:40

Author:Marydon

java如何實現不固定個數傳參(定義實參個數可變的方法)

參考鏈接:原文鏈接

傳統方法:為這個方法定義一個數組型的參數,將不確定的參數放到數組中,把這個數組作為一個實參傳遞過去

舉例:

// 定義帶有數組型參數的方法
int getSum(int[] params) {
    
}
// 調用
getSum(1,2,3);

方法:借助Varargs機制

J2SE 1.5提供了“Varargs”機制。借助這一機制,可以定義能和多個實參相匹配的形參。從而,可以用一種更簡單的方式,來傳遞個數可變的實參;

Varargs:"variable number of arguments"

舉例:

/**
 * 求和
 * @description
 *  定義實參個數可變
 * @param params
 *  >=0個int類型實參
 * @return
 */
static int getSum(int... params) {
    //
    int sum = 0;
    for (int i : params) {
        sum += i;
    }
    return sum;
}

// 調用
int sum = Test.getSum(1,2,3);
System.out.println(sum); // 6

注意事項:

  1.java不支持泛型數組,當數組元素類型不確定時,可以使用Object來定義該數組的數據類型;

  2.不能確定的參數個數的方法在定義時,該形參必須放在方法的最后一個參數;

  否則,編譯報錯:The variable argument type int of the method getSum must be the last parameter

  3.不能再為這個類定義一個和轉化后的方法簽名一致的方法;

   否則,編譯報錯:Duplicate method getSum(int[]) in type Test

   原因:在class文件編譯時實際上將匹配不確定個實參的形參,轉化為數組形參,即

static int getSum(int[] params) {
    //
    int sum = 0;
    for (int i : params) {
        sum += i;
    }
    return sum;
}  

  4.傳0個實參時,傳遞過去的是一個空數組,而不是null;

  5. 傳統方式與這種方式的區別在於:這種方式傳參時不必將參數先封裝到一個數組里面。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM