OpenCsv:我可以指定一次区域设置,而不是在每个 @CsvBindByName 中重复它吗?

lan*_*ava 5 java locale number-formatting opencsv

我正在使用OpenCSV来解析 csv 文件,这些文件在英国和德国运行时都需要工作。解析数字时,我们需要指定区域设置,以便 OpenCSV 知道哪个小数点分隔符(“.”表示英国,“,”表示德国)和千位分隔符(“,”表示英国,“.”表示德国)

执行此操作的一种选择是在每个@CsvBindByName实例上指定区域设置

public class MyRowBackingBean {
    @CsvBindByName(column = "Quantity", locale = "en-GB")
    @CsvNumber("#0.0#")
    private BigDecimal quantity;

    @CsvBindByName(column = "Amount", locale = "en-GB")
    @CsvNumber("#0.0#")
    private BigDecimal amount;
}
Run Code Online (Sandbox Code Playgroud)

我想避免为每个字段重复区域设置,因此我希望采用全局方式来执行此操作。

解析 csv 的代码如下所示:

char seperator = ';';
CSVParser parser = new CSVParserBuilder().withSeparator(separator).build();
MappingStrategy<R> mappingStrategy = new HeaderColumnNameMappingStrategy<>();
mappingStrategy.setType(MyRowBackingBean.class);
try (Reader reader = ...) {
   CSVReader csvReader = new CSVReaderBuilder(reader).withCSVParser(csvParser).build();
   CsvToBean<R> csvToBean = new CsvToBeanBuilder<R>(csvReader)
      .withMappingStrategy(mappingStrategy)
      .withFilter(...)
      .build();
   List<MyRowBackingBean> beans = csvToBean.parse()
   ...
}
Run Code Online (Sandbox Code Playgroud)

我查看了以下类,但找不到 setDefaultLocale(...) 方法或类似方法