如果我有方法public void foo(Object... x)
,我可以这样称呼它:
Object[] bar = ...;
foo(bar);
然而,这不起作用:
Object baz = ...;
Object[] bar = ...;
foo(baz, bar);
显然,可以通过创建大小超过bar
的数组并复制baz
和bar
的内容来完成。但是有一些更易读的捷径吗?
答案 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) {}