Java Univocity-如何在没有基元数组的情况下正确写入行

Java Univocity-如何在没有基元数组的情况下正确写入行,java,csv,univocity,Java,Csv,Univocity,我用的是: List<String> row = new ArrayList<String>(); row.add("value 1"); row.add("value 2"); writer.writeRow(row); 如何获得以下信息 "value1, value2" 更糟糕的是,标题是从列表中正确写入的: List<String> headers = new ArrayList<String>(); headers.add("date"

我用的是:

List<String> row = new ArrayList<String>();
row.add("value 1");
row.add("value 2");
writer.writeRow(row);
如何获得以下信息

"value1, value2"

更糟糕的是,标题是从列表中正确写入的:

List<String> headers = new ArrayList<String>();
headers.add("date");
writer.writeHeaders(headers);
这也产生了正确的输出

因为还有一个重载方法带有(Object…Object)参数,所以我猜Java使用这个方法

我的问题可以通过将列表强制转换为集合来解决

mWriter.writeRow((Collection)row);

我知道Java就是这样工作的,但我认为如果不需要极高的性能,大多数人更愿意避免使用原语,因此这应该是开箱即用的——可能使用不同的签名方法。

这里的库作者。我刚刚对它进行了更新,以解决这个问题——它本质上是泛型的新手错误

如中所示,方法签名是:

public final void writeRow(集合行)

当您传递
列表时,它与正确的方法签名不匹配,将转到另一个接受对象varargs的方法签名

我已更新代码,使其具有此签名,因为集合类型根本不重要:

public final void writeRow(集合行)

如果您更新到2.6.0版,您最初发布的代码将产生正确的结果,无需强制转换任何内容

抱歉给你添麻烦了

String[] rowData = new String[2];
rowData[0] = "value 1";
rowData[1] = "value 2";
mWriter.writeRow(rowData);
mWriter.writeRow((Collection)row);