Если вы хотите использовать массив переменных аргументов, вы можете создать новый массив со вставленным элементом.Например, используя потоки:
private void a(String... argsArr) {
String[] args2 = Stream.concat(Stream.of("foo"), Arrays.stream(args))
.toArray(String[]::new);
b( args2 );
}
При желании вы можете создать новый массив без потоков.Вот простой способ использования временного списка.
private void a(String... argsArr) {
List<String> newList = new ArrayList<>();
newList.add("foo");
newList.addAll(Arrays.asList(argsArr));
b(newList.toArray(new String[newList.size()]));
}
Если вам не нужен массив переменных аргументов, вы можете использовать аргумент List <>.Было бы неплохо вставить новый элемент в другой список.Вызывающий абонент может предоставить неизменяемый список или может не захотеть, чтобы его список был изменен.
private void a2( List<String> args ) {
List<String> newList = new ArrayList<>( args );
newList.add(0, "foo"); // <-- Extra O(n) time to shift elements over.
b( newList );
}
Вы можете повысить эффективность с помощью постоянного коэффициента, не вставляя в начало существующего списка.
private void a2( List<String> args ) {
List<String> newList = new ArrayList<>( );
newList.add("foo");
newList.addAll( args );
b( newList );
}