首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

【Java 每日一題】20170106:可變參數方法聲明陷阱解析

     編輯:Java 綜合教學

【Java 每日一題】20170106:可變參數方法聲明陷阱解析

題目代碼

package Jan2017;
public class Ques0106 {
    public void method01(String... strings, int num) { }
    public void method02(String... strings, int... is) { }
}

問題

以上兩個方法使用了可變參數,請問這兩個方法聲明有誤嗎?

答案與解析

  • method01:編譯錯誤。Java 規定:可變參數必須是方法參數列表的最後一個參數。String... strings 後面跟 int num 違反規範。
  • method02:編譯錯誤。一個方法最多只能有一個可變參數。此處同時出現 String... strings 和 int... is 非法。

正確寫法示範

// 正確:可變參數在最後
public void method01(int num, String... strings) { }

// 正確:單一可變參數,其餘固定參數在前
public void method02(String prefix, int... numbers) { }

// 正確:需多組可變參數時,用集合/數組封裝
public void method03(List<String> strings, List<Integer> numbers) { }

知識點延伸

  • 可變參數本質是語法糖,編譯期轉為數組 String[]。
  • 調用時可傳 0 個、1 個或多個參數,也可直接傳陣列。
  • 重載解析優先級:固定參數 > 可變參數,避免歧義。

原文發布於公眾號「weknow619」與簡書,掃碼關注獲取每日一題推送。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved