0

为了生成 CSV 文件的标题,我使用了 2 个类。一个FooHeadergenerateHeaderColumns = true另一个FoogenerateHeaderColumns = false。由于 CSV 生成不是一次性的过程,因此使用FoowithgenerateHeaderColumns = true将不起作用,因为每次生成的标头都Foo将被编组为 CSV。

下面的方法有效,但它确实是一个非常好的实现。特别是当它创建冗余代码时:和的实现FooHeaderFoo(并且必须)完全相同。

@Data
@ToString
@EqualsAndHashCode
@CsvRecord(separator = ";"
  , skipFirstLine = true
  , generateHeaderColumns = true
  , quoting = true
  , quote = "\"")
public class FooHeader {
    @DataField(pos = 4, columnName = "First name")
    private String person_first_name;

    @DataField(pos = 5, columnName = "Last name")
    private String person_name;

    //..
}

@Data
@ToString
@EqualsAndHashCode
public class Foo {
    @DataField(pos = 4)
    private String first_name;

    @DataField(pos = 5)
    private String last_name;

    //..
}

我正在寻找一种使用单个类而不是两个类的方法。该解决方案似乎围绕动态设置注释generateHeaderColumns@CsvRecord例如在 bean 或处理器中。

在继续朝那个方向前进之前,我想知道其他人是否已经解决了同样的问题,或者直接使用 bindy(还没有找到使用 bindy 的方法)或使用其他方法。如果是这样,你是如何优雅地解决这个问题的?还是在运行时更改类注释值是更好的选择?

4

0 回答 0