2012-06-08 59 views
1

我想生成自定義對象列表的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()方法,而不需要在每個具體類中重新實現。

是否有acheve這還是我要實現爲每個類人工toString()方法任何有用的圖書館嗎?我應該使用反射嗎?

+0

相關,可能是一個dup:http://stackoverflow.com/questions/3666007/how-to-serialize-object-to-csv-file – aioobe

+0

反射將如何幫助這裏? –

回答

1

名稱中使用OpenCSV類似於您的需求庫。它是解析和編寫CSV文件的庫,可處理引號,不同分隔符和多行值。

1

與反射方法的問題是 1)您可以輕鬆地得到您的具體類的字段,你不希望在您的CSV表。 2)你如何爲你的csv表生成一個頭文件?

而且,我覺得很糟糕的設計把CSV生成邏輯的自定義對象的內部,當然這取決於他們所代表(也可能有利於你的做法,毫無疑問的原因)。考慮使用一個單獨的類。

是的,你可以(甚至是必須)使用反射,不,我不知道是否已經存在爲您處理此庫。 OpenCSV正如其他人所提到的那樣,只要您在CSV表格中擁有所需的值,就可以完成將所有內容放在一起的工作。

看看Class.getFields(),Field.setAccessible()(如果你需要的),應該這樣做。實際上使用反射並不難。