2017-10-06 55 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

相关问题