java - 我可以將數組作為參數傳遞給Java中具有可變參數的方法嗎?




3 Answers

可變參數方法function(Object... args)的基礎類型 function(Object[] args) 。 Sun以這種方式添加了可變參數以保持向後兼容性。

所以你應該能夠將extraVar加入args並調用String.format(format, args)

我希望能夠創建一個功能,如:

class A {
  private String extraVar;
  public String myFormat(String format, Object ... args){
    return String.format(format, extraVar, args);
  }
}

這裡的問題是argsmyFormat方法中被當作Object[]處理,因此是String.format的單個參數,而我希望args每個Object都作為新參數傳遞。 由於String.format也是一個可變參數的方法,所以這應該是可能的。

如果這是不可能的,有沒有像String.format(String format, Object[] args) ? 在這種情況下,我可以使用一個新的數組將extraVar預先extraVarargs ,並將其傳遞給該方法。




傳遞一個數組是可以的 - 事實上它也是一樣的

String.format("%s %s", "hello", "world!");

是相同的

String.format("%s %s", new Object[] { "hello", "world!"});

它只是語法糖 - 編譯器會將第一個轉換為第二個,因為基礎方法期望為vararg參數提供一個數組。

看到




我有同樣的問題。

String[] arr= new String[] { "A", "B", "C" };
Object obj = arr;

然後通過obj作為可變參數。 有效。




Related