单义性 - 如何正确地写一行没有基本数组

我使用这个:单义性 - 如何正确地写一行没有基本数组

List<String> row = new ArrayList<String>(); 

row.add("value 1");

row.add("value 2");

writer.writeRow(row);

,输出什么本质上是一个ArrayList的toString()值:

"[value1, value2]" 

如何获取以下?

"value1, value2" 

回答:

更糟糕的是,头被从列表中正确写入:

List<String> headers = new ArrayList<String>(); 

headers.add("date");

writer.writeHeaders(headers);

我看了看他们的一些例子(特别com.univocity.parsers.examples.CsvWriterExamples),看到输出是正确

所以我就这样:

String[] rowData = new String[2]; 

rowData[0] = "value 1";

rowData[1] = "value 2";

mWriter.writeRow(rowData);

这也产生了一个正确的输出。

由于还有一个带有(Object ... object)参数的重载方法,我的猜测是Java使用该方法。

我的问题可以通过将List转换为集合来解决。

mWriter.writeRow((Collection)row); 

我知道这是相当多的Java是如何工作的,但我想大多数人宁愿避免如果不需要极致性能基元,所以这应该工作开箱 - 可能具有不同的签名方法。

回答:

这里的图书馆的作者。我刚刚更新了它来解决这个问题 - 它实质上是泛型的新手错误。

正如你可以看到this commit,该方法的签名是:

public final void writeRow(Collection<Object> row)

当你传递一个List<String>它不匹配正确的方法签名,并要另外一个接受可变参数对象。

我已经更新的代码有这个签名集合类型不会在所有问题:

public final void writeRow(Collection<?> row)

如果更新到2.6.0版,你最初发布将产生的代码正确的结果,无需施放任何东西。

对不起。

以上是 单义性 - 如何正确地写一行没有基本数组 的全部内容, 来源链接: utcz.com/qa/263012.html

回到顶部