Apache 配置添加对象而不是字符串

Apache Configuration add object instead of String

我的 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' 时,它告诉我 String cannot be case to SiteNode。 Apache 是否可以保存对象?

getList() 的重载版本支持到特定目标的数据类型转换 class。

看看documentation

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

Get a list of typed objects associated with the given configuration key returning the specified default value if the key doesn't map to an existing object.

像这样的东西应该适合你:

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