如何通过将不同类型传递给ColumnPositionMappingStrategy来处理CSV来重用代码

时间:2015-04-05 07:45:40

标签: java csv

我想重用下面的代码用于不同的类型。例如,我希望使用ClassOne将cvs文件中的值映射到cls1field1cls1field2,如下面的代码所示:

String[] columns = new String[] {"cls1field1", "cls1field2"};

ColumnPositionMappingStrategy<ClassOne> mappingStrategy = new ColumnPositionMappingStrategy<>();
mappingStrategy.setColumnMapping(columns);
mappingStrategy.setType(MyClassOne.class);

InputStream in = this.getClass().getClassLoader().getResourceAsStream(fileName);

CSVReader csvReader = new CSVReader(new InputStreamReader(in), ';');
CsvToBean<ClassOne> csv = new CsvToBean<>();
List<ClassOne> list = csv.parse(mappingStrategy, csvReader);

现在,我想为ClassTwo执行相同的代码,该代码具有不同的字段cls2Field1cls2Field2

我能想到的唯一解决方案是将<ClassOne>ClassOne.class替换为<Object>Object.lass,如果我想访问列表成员,则使用转换。我试图使用“ClassOne”和ClassTwo都实现的接口,但问题是cvs.parse方法使用newInstance()方法来实例化类。

我该怎样做才能妥善解决这个问题?

0 个答案:

没有答案