簡體   English   中英

標准Java varargs轉換器到數組

[英]Standard Java varargs converter to array

我的問題很簡單。

核心Java中是否有一種方法可以執行以下代碼:

<T> T[] asArray(T... values) {
    return values;
}

我嘗試在Arrays類中尋找它,但是似乎沒有這種方法。

給你一個背景:

以前從事此代碼工作的人認為varargs比類構造函數中的常規數組更好(即使它應該是數組)。 現在,我必須添加另一個通用數組作為構造函數的最后一個參數,從而轉換此代碼:

public Clazz(String... values) {
}

對此

public <T> Clazz(String[] values, T[] additionalParameters)

結果,我需要重構使用此構造函數的所有位置。 更糟糕的是,還有其他兩個類遵循相同的模式,因此我需要在將來的某個時候對其進行修改。 這就是上面提到的asArray方法可以提供幫助的地方。

我知道最好在每次出現時都用顯式數組創建替換varargs(無論如何,這就是我要做的事情),但是我仍然想知道是否已經有這樣的方法(僅出於好奇)。

JDK不需要提供這種方法,因為您只需構造一個數組即可獲得相同的行為-例如:

// these two statements are conceptually identical
String[] a = asArray("a", "b", "c");
String[] b = new String[]{"a", "b", "c"};

你可以做:

T[] a = Stream.of(t1, t2, t3).toArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM