limiting the 'type' field only to 'Class<T>' only is a little too restrictive; the attached patch, testcase included, extends it to 'Class<? extends T>' to support also T subtypes.
scenarios: users need to parse list of abstract class 'MyAbstractBean' extended by 'MyBean1' and 'MyBean2', it can be easily supported by:
{{{
List<MyAbstractBean> list;
CsvToBean<MyAbstractBean> csv = new CsvToBean<MyAbstractBean>();
ColumnPositionMappingStrategy<MyAbstractBean> strat = new ColumnPositionMappingStrategy<MockBean>();
strat.setType(MyBean1.class);
strat.setColumnMapping(new String[]{ "a", "b", "c" });
list = csv.parse(strat, new StringReader("..."));
strat.setType(MyBean2.class);
strat.setColumnMapping(new String[]{ "d", "e", "f" });
list = csv.parse(strat, new StringReader("..."));
}}}
same concept extended to interfaces/implementations
I have a patch ready for version 3.8, and will submit once the master branch is stable.
Included in version 3.8, which was released yesterday.