Java 如何将外部参数传递给SimpleXML创建的对象

Java 如何将外部参数传递给SimpleXML创建的对象,java,simple-framework,Java,Simple Framework,我正在将配置直接反序列化到对象层次结构中。有些对象具有构造函数参数,这些参数在类似配置的内部接口中没有提到 例如,配置文件: <config> <strategy param="value" class="MyStrategy"> </config> 课程: class Config { @ElementList(inline=true,entry="strategy") List<Object> strategies

我正在将配置直接反序列化到对象层次结构中。有些对象具有构造函数参数,这些参数在类似配置的内部接口中没有提到

例如,配置文件:

<config>
    <strategy param="value" class="MyStrategy">
</config>

课程:

class Config
{
    @ElementList(inline=true,entry="strategy")
    List<Object> strategies;
}

class MyStrategy
{
    MyStrategy(IFramework framework)
    {
    }
}
类配置
{
@元素列表(inline=true,entry=“strategy”)
列出战略;
}
班级策略
{
MyStrategy(IFramework框架)
{
}
}
这里我有一个iframew实例,希望SimpleXML在对象需要构造函数中的iframew参数时使用它。我还没有找到一种仅仅通过配置SimpleXML就可以实现上述功能的方法

我现在实现它的方式很难看。我自己从xml节点读取所有元素,创建策略类的实例,并对创建的对象调用Persister.read()。为了让它工作,我必须用strict=false声明Config类,以避免策略被Simple反序列化,并为每个策略添加一个伪“class”属性

@Root(strict=false)
class Config
{
    List<Object> strategies;

    void loadStrategies(IFramework framework, Persister persister, InputNode source)
    {
        // traverse all nodes looking for "strategy"
        // create strategy (e.g. MyStrategy)
        // call persister.read(strategy, source)
    }
}

class MyStrategy
{
    @Attribute(name="class")
    String dummy;

    MyStrategy(IFramework framework)
    {
    }
}
@Root(strict=false)
类配置
{
列出战略;
void加载策略(IFramework框架、Persister持久器、InputNode源)
{
//遍历所有节点以查找“策略”
//创建策略(例如MyStrategy)
//调用persister.read(策略,源)
}
}
班级策略
{
@属性(name=“class”)
虚拟字符串;
MyStrategy(IFramework框架)
{
}
}
我想知道这是否可以通过SimpleXML中的某种机制来解决。
是否可以告诉SimpleXML将IFramework实例“自动连接”到它创建的对象?

尝试使用转换器,您可以创建一个并注册它。然后,当您想要加载MyStrategy时,可以调用它。看