标准 Java 可变参数到数组的转换器

Standard Java varargs converter to array

我的问题很简单

核心 Java 中是否有执行以下代码的方法:

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

我在Arraysclass中找过,但是好像没有这个方法

给你一个上下文:

之前编写此代码的人认为可变参数优于 class 构造函数中的常规数组(即使它应该是一个数组)。现在我必须添加另一个通用数组作为构造函数的最后一个参数,从而转换此代码:

public Clazz(String... values) {
}

至此

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

因此我需要重构所有使用此构造函数的地方。更糟糕的是,还有其他几个 class 遵循相同的模式,我需要在将来的某个时候修改它们。这就是上面提到的方法 asArray 可以提供帮助的地方。

我知道最好在每次出现时都用显式数组创建替换可变参数(这就是我要做的),但我仍然想知道是否已经有这样的方法(刚出来纯粹出于好奇)。

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();