繁体   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