不推荐使用ColumnPositionMappingStrategy setType

时间:2015-12-01 09:50:36

标签: java opencsv

问题:

我正在使用com.opencsv来解析CSV文件并获取一系列java对象。遗憾的是,有一种名为setType()的方法已被弃用。 我无法找到一个等效的方法。

相关性:

  <dependency>
                <groupId>com.opencsv</groupId>
                <artifactId>opencsv</artifactId>
                <version>3.3</version>
            </dependency>

Spec(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

1 个答案:

答案 0 :(得分:3)

更新至3.6版。它已不再被弃用。

它在早期的3.X版本中被弃用,因为我们试图找到一种使用Generics的方法(因此getType将返回T而不是setType中传递的内容)。如果证明这是不可能的,那么代码就会被撤消,但是不小心将其弃用了。