我想重用下面的代码用于不同的类型。例如,我希望使用ClassOne
将cvs文件中的值映射到cls1field1
和cls1field2
,如下面的代码所示:
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
执行相同的代码,该代码具有不同的字段cls2Field1
和cls2Field2
。
我能想到的唯一解决方案是将<ClassOne>
和ClassOne.class
替换为<Object>
和Object.lass
,如果我想访问列表成员,则使用转换。我试图使用“ClassOne”和ClassTwo
都实现的接口,但问题是cvs.parse
方法使用newInstance()
方法来实例化类。
我该怎样做才能妥善解决这个问题?