将元素添加到Java vararg调用的最可读方式

时间:2012-02-13 14:56:43

标签: java variadic-functions

如果我有方法public void foo(Object... x),我可以这样称呼它:

Object[] bar = ...;
foo(bar);

然而,这不起作用:

Object baz = ...;
Object[] bar = ...;
foo(baz, bar);

显然,可以通过创建大小超过bar的数组并复制bazbar的内容来完成。但是有一些更易读的捷径吗?

3 个答案:

答案 0 :(得分:5)

Guava的ObjectArrays类提供了将单个对象连接到数组的开头或结尾的方法,主要用于此目的。没有办法绕过线性开销,但它已经为你构建和测试。

答案 1 :(得分:3)

不幸的是,没有开箱即用的方法可以让它更具可读性。

但是,您可以创建一个辅助方法,该方法将获取数组和vargs参数,并返回附加了varargs的数组。

这样的事情:

public T[] append(T[] originalArray, T... additionalElements) { ... }

foo( append( bar, baz) );

答案 2 :(得分:1)

可能会超载foo()

public void foo(Object... x) {}
public void foo(Object[] a, Object... x) {}