问题:
我正在使用com.opencsv
解析CSV文件并获取Java对象数组。遗憾的是,有一个称为setType()
的方法已被弃用。
我一直找不到等效的方法。
依赖关系:
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>3.3</version>
</dependency>
规格(Javadoc):
版本3.6的Javadoc(找不到3.3):
http://opencsv.sourceforge.net/apidocs/com/opencsv/bean/HeaderColumnNameMappingStrategy.html#setType(java.lang.Class)
我的代码:
private List<importedFromCSV> handleCSV(byte[] bytes,Class clazz) throws IOException {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(bais));
ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy();
strat.setType(clazz);
//String[] columns = new String[] {"a","b"}; // the fields to bind do in your JavaBean
//do we want csv to include columns or do we hardcode the order?
CSVReader reader = new CSVReader(bufferedReader);
String [] columns;
if((columns = reader.readNext()) == null) {
return null;
}
strat.setColumnMapping(columns);
CsvToBean csv = new CsvToBean();
return csv.parse(strat, bufferedReader);
}
有关:
示例-Populating Javabean via openCSV - code explanation
最佳答案
更新到版本3.6。它不再被弃用。
在我们试图寻找一种使用泛型的方法时,它在3.X的早期版本中已被弃用(因此getType将返回T而不是setType中传递的T)。如果证明这是不可能的,则撤消代码,但是意外弃用了弃用代码。