2015-10-01 4 views
1

Я использую API, который требует от меня, чтобы использовать приведенную ниже функцию:Добавить элементы массива через запятую во время выполнения - Java

out.writeNext(trtd[0], trtd[1], trtd[2]); 

Как вы можете догадаться из кода, элементы массива могут быть разделены только по запятой. Я могу знать длину массива trtd, но как добавить динамические элементы в качестве аргументов? Так что код может быть изменен для n элементов (поскольку мы не можем делать цикл for здесь, когда аргументы меняются и разделяются запятой).

out.writeNext(trtd[0], trtd[1], trtd[2],.........,trtd[n]); 

Я думал о том, чтобы получить аргументы в строке, а затем преобразовать их в код, но я пробовал разные методы, которые не работали для меня. Пожалуйста, помогите мне с ответами.

+1

Какой API это может иметь это ограничение? Не могли бы вы просто вызвать writeNext для каждого элемента массива? – dxdy

+0

Нет, он выполнит какую-либо другую операцию. Мне нужно объединить аргументы, и библиотека, которую я пытаюсь использовать, - OpenCSV –

+3

Вы уверены, что не можете просто передать массив? Подпись метода близка к подписи ['Varargs'] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html), которая может принимать либо список с разделителями-запятыми элементов или фактического массива. – ryanyuyu

ответ

2

Метод «writeNext» как у нижнего (Link);

public void writeNext(java.lang.String... nextLine) 

Таким образом, вы можете передать все параметры через;

out.writeNext(trtd); 

Потому что «trtd» представляет собой массив строк. «someMethod(String... str)» означает, что вы можете передавать параметры как «someMethod("a", "b", "c");» или вы можете передать строковый массив как; String [] arr= {"a", "b", "c"}; -> «someMethod(arr);»

+0

Да, это работает. Надеюсь, у меня нет такой проблемы, когда я не могу использовать такие петли, как показано выше. Для API да, это прекрасный ответ. Благодаря! –

+0

@AbhishekSingh, ваш прием! –