2017-10-06 59 views
0

我有一個Apache配置的問題。是否可以添加對象而不是它們的字符串表示?Apache配置添加對象而不是字符串

例如,我想保存整個「SiteNode」,而不是「的toString()」的變體:

public void persistSiteTree(Context context, Configuration config) { 
    List<SiteNode> nodes = Model.getSingleton().getSession().getNodesInContextFromSiteTree(context); 
    config.addProperty(CONFIG_PROPERTY_AUTHORISATION, nodes); 
} 

public void loadSiteTree(Context context, Configuration config) { 
    List<Object> nodes = new ArrayList<>(); 
    nodes = config.getList(CONFIG_PROPERTY_AUTHORISATION, nodes); 
    if(nodes != null && !nodes.isEmpty()) { 
     // Load in sites tree 
     SiteNode node = (SiteNode) nodes.get(0); // Gives error as String cannot be cast to "SiteNode" 
    } 
} 

但是,當我稱之爲「loadSiteTree」它讓我不能將字符串情況SiteNode 。 Apache可以保存對象嗎?

回答

0

getList()的重載版本支持將數據類型轉換爲特定的目標類。

看看documentation

<T> List<T> getList(Class<T> cls, String key, List<T> defaultValue)

獲取具有給定的配置 鍵返回指定的默認值,如果鍵沒有映射到一個 現有對象相關類型對象的列表。

像這樣的東西應該爲你工作:

List<SiteNode> nodes = config.getList(SiteNode.class,CONFIG_PROPERTY_AUTHORISATION, nodes);

+0

謝謝你看這個。我不知道爲什麼,但是這個方法並不存在於我的apache.commons.Configuration中。有兩種變體:getList(String key)和getList(String key,list <> default) – CookieAndPizza

+0

您使用的是哪個版本? – Diyarbakir

+0

1.9。但我正在開發一個插件,因此無法改變這一點。該插件的論壇沒有這樣的部分,所以這就是爲什麼我在這裏問(: – CookieAndPizza

相關問題