首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 可變參數 vs 數組參數:調用語法不同,本質相同

     編輯:程式設計疑難解答

語法對比

// 可變參數
static void pr(Object... a) { ... }

// 數組參數
static void pr(Object[] a) { ... }

調用差異

調用方式可變參數數組參數
單獨傳遞多個參數`pr(new Abc(), new Abc(), new Abc())` ✅❌ 需先 `new Object[]{...}`
傳遞已有數組`pr(arr)` ✅(自動拆箱)`pr(arr)` ✅
方法內部類型`Object[]`(編譯器自動轉換)`Object[]`

底層原理

**可變參數在編譯期語法糖,實際編譯為數組。** 字節碼中方法簽名均為 `([Ljava/lang/Object;)V`。

最佳實踐

  • **API 設計**:參數個數不固定、調用者多為字面量列表 → 用可變參數(如 `String.format`、`Logger.log`)。
  • **內部方法/已有集合**:參數本身就是數組/集合 → 用數組參數,語意更清晰。
  • **避免混淆**:同一類中不要同時定義 `foo(Object...)` 和 `foo(Object[])`,會導致調用歧義(編譯錯誤)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved