我想从自定义对象列表中生成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()
方法?我应该使用反射吗?
答案 0 :(得分:2)
有一个类似于opencsv
名称的要求的库答案 1 :(得分:1)
使用OpenCSV
。它是一个用于解析和编写CSV文件的库,用于处理引号,不同的分隔符和多行值。
答案 2 :(得分:1)
反思方法的问题是 1)您可以轻松地在csv表中获取您不想要的具体类中的字段。 2)如何为csv表生成标题?
另外,我发现将csv生成逻辑放在自定义对象中是不好的设计,当然取决于它们代表什么(毫无疑问,也可能有理由支持你的方法)。考虑使用单独的类。
是的,您可以(必须)使用反射,不,我不知道是否已经存在为您处理此问题的库。其他人提到的OpenCSV可以在CSV表中拥有您想要的值后将所有内容放在一起。
看看Class.getFields(),Field.setAccessible()(如果你需要),应该这样做。使用反射实际上并不难。