从对象列表生成CSV

时间:2012-06-08 09:02:26

标签: java reflection csv

我想从自定义对象列表中生成CSV文件。

我有一个抽象类:

public abstract class MyClass{
    public static final String SEPARATOR = ";";

    // many private variables

    @Override
    public String toString(){
        // return all my variables values separated by SEPARATOR
    }
}

以及从此类继承的几个具体类。 我只想在这个类中实现toString()方法,而不是在每个具体类中重新实现。

是否有任何有用的库来实现这一点,还是我必须为每个类实现手动toString()方法?我应该使用反射吗?

3 个答案:

答案 0 :(得分:2)

有一个类似于opencsv

名称的要求的库

答案 1 :(得分:1)

使用OpenCSV。它是一个用于解析和编写CSV文件的库,用于处理引号,不同的分隔符和多行值。

答案 2 :(得分:1)

反思方法的问题是 1)您可以轻松地在csv表中获取您不想要的具体类中的字段。 2)如何为csv表生成标题?

另外,我发现将csv生成逻辑放在自定义对象中是不好的设计,当然取决于它们代表什么(毫无疑问,也可能有理由支持你的方法)。考虑使用单独的类。

是的,您可以(必须)使用反射,不,我不知道是否已经存在为您处理此问题的库。其他人提到的OpenCSV可以在CSV表中拥有您想要的值后将所有内容放在一起。

看看Class.getFields(),Field.setAccessible()(如果你需要),应该这样做。使用反射实际上并不难。