如何在将 csv 字段解析为 java 对象之前进行类型转换

How to do typecasting before parsing csv field to java object

我有一个如下所示的 CSV 文件

Rahul|S|74|72|71
Amrit|S|82|81|80
Akshay|S|82|89|81

我想将字段映射到 java 对象。 我在文件中将所有字段作为字符串获取。 我正在使用 opencsv 将它们转换为 java 对象,如下所示

我的学生 class 看起来像:

public class Student {
  @CsvBindByPosition(position = 0)
  private String name;

  @CsvBindByPosition(position = 1)
  private String mathsScore;

  @CsvBindByPosition(position = 2)
  private String scienceScore;

  @CsvBindByPosition(position = 3)
  private String englishScore;
}

这就是我将其解析为 Student 对象的方式。

List<Student> studentsList = new CSVToBeanBuilder(new FileReader(csvFile))
      .withType(Student.class)
      .build().parse();

我正在将 csv 字段解析为 java 对象,因为我想将它们存储在数据库中 在我的数据库中,标记是整数,但我在 csv 文件中将它们作为字符串获取。

现在在 Student class 中,我将标记定义为字符串,因为我在 csv 文件中将它们作为字符串获取。 有什么方法可以在将标记解析为 Student 对象时直接将标记类型转换为 Integer 以便我可以使用相同的 Student class 保存在数据库中,否则我将不得不创建另一个 class 不必要的。

定义字段时可以同时使用Integer和int。

示例如下:

    @CsvBindByPosition(position = 0)
    public String macAddress;

    @CsvBindByPosition(position = 1)
    public int seqID;

    @CsvBindByPosition(position = 2)
    public Integer digital1;

    @CsvBindByPosition(position = 3)
    public Integer digital2;

    @CsvBindByPosition(position = 4)
    public Integer digital3;

    @CsvBindByPosition(position = 5)
    public Integer digital4;

    @CsvBindByPosition(position = 6)
    public Double col1;

    @CsvBindByPosition(position = 7)
    public Double col2;

    @CsvBindByPosition(position = 8)
    public Double col3;

    @CsvBindByPosition(position = 9)
    public Double col4;

    @CsvBindByPosition(position = 10)
    public Double col5;

    @CsvBindByPosition(position = 11)
    public Double col6;

    @CsvBindByPosition(position = 12)
    public Long timeStamp;

--- 已编辑 ---

日期:

@CsvBindByPosition(position = 2)
@CsvDate(value = "dd.MM.yyyy")
private Date birthDate;