标准 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();
我的问题很简单
核心 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();