如何实现一个xmlsaveable/loadableclass?
How to implement an xml saveable/loadable class?
我想创建一个 class,它可以加载并保存到 XML 文件中。我想使用一个正在执行加载任务的 class,我想将它与我想要保存和加载的实际 class 集成,一切似乎都是可行的,直到 JAVA 不允许从 class 中更改 class 实例,即没有:
this = JAXBLoader.load();
这就是我目前面临的问题。
而且我希望能够通过 class 本身的 public 方法控制加载和保存,这样从外部我就不需要任何工厂或管理人员来加载它。目前我看到的唯一解决方案是如果我扩展我想保存为 xml 的 class 然后将所有方法委托给实际 class 的实例和然后从文件加载新实例时,该实例将被替换。但是必须委托所有方法会带来一些开销,尤其是如果您需要向 class 添加新方法并具有多个实现...
那么,在实现类似的目标或解决我上面演示的问题方面,是否有任何好的做法或模式?其实我是开放的,如果有人可以整体分享什么是最好的方法 class 保存和加载最简单的方法我会很高兴。
我不太清楚你为什么要避免外部工厂和管理人员。对我来说,提取序列化而不是在模型 类 本身中处理它似乎很自然。不过还好。
据我了解,您的核心问题是将数据加载到 this
实例中。这是使用 JAXB 实现此目的的简单方法。
我是 JAXB2 Basics 的作者,JAXB/XJC 的插件包。它包含 copyable
插件,它在模式派生的 类.
中生成一些 copyTo
方法
这将为您提供类似 copyTo(Object target)
的方法。有了这个,您可以首先将数据从 XML 解组到某个临时实例,然后再 copyTo(this)
。类似于:
MyType temporaryInstance = unmarshaller.unmarshal(source, MyType.class).getValue();
temporaryInstance.copyTo(this);
您可以通过代码注入或子类化将此方法添加到您的模式派生代码中。
我想创建一个 class,它可以加载并保存到 XML 文件中。我想使用一个正在执行加载任务的 class,我想将它与我想要保存和加载的实际 class 集成,一切似乎都是可行的,直到 JAVA 不允许从 class 中更改 class 实例,即没有:
this = JAXBLoader.load();
这就是我目前面临的问题。
而且我希望能够通过 class 本身的 public 方法控制加载和保存,这样从外部我就不需要任何工厂或管理人员来加载它。目前我看到的唯一解决方案是如果我扩展我想保存为 xml 的 class 然后将所有方法委托给实际 class 的实例和然后从文件加载新实例时,该实例将被替换。但是必须委托所有方法会带来一些开销,尤其是如果您需要向 class 添加新方法并具有多个实现...
那么,在实现类似的目标或解决我上面演示的问题方面,是否有任何好的做法或模式?其实我是开放的,如果有人可以整体分享什么是最好的方法 class 保存和加载最简单的方法我会很高兴。
我不太清楚你为什么要避免外部工厂和管理人员。对我来说,提取序列化而不是在模型 类 本身中处理它似乎很自然。不过还好。
据我了解,您的核心问题是将数据加载到 this
实例中。这是使用 JAXB 实现此目的的简单方法。
我是 JAXB2 Basics 的作者,JAXB/XJC 的插件包。它包含 copyable
插件,它在模式派生的 类.
copyTo
方法
这将为您提供类似 copyTo(Object target)
的方法。有了这个,您可以首先将数据从 XML 解组到某个临时实例,然后再 copyTo(this)
。类似于:
MyType temporaryInstance = unmarshaller.unmarshal(source, MyType.class).getValue();
temporaryInstance.copyTo(this);
您可以通过代码注入或子类化将此方法添加到您的模式派生代码中。