@XmlSeeAlso替代

@XmlSeeAlso替代,第1张

@XmlSeeAlso替代

这取决于您如何创建JAXBContext。该newInstance方法可以与所有的类的显式列表被调用,该方法的文档也给出了类似的例子。

客户端应用程序必须提供新上下文对象需要识别的类的列表。新上下文不仅会识别所有指定的类,而且还将识别从指定类直接/间接静态引用的任何类。引用类的子类或@XmlTransient引用类的子类均未在JAXBContext中注册。例如,在以下Java代码中,如果执行newInstance(Foo.class),则新创建的JAXBContext将识别Foo和Bar,但不能识别Zot或FooBar:

class Foo {    @XmlTransient FooBar c;    Bar b;}class Bar { int x; }class Zot extends Bar { int y; }class FooBar { }

编辑:
如果您至少知道潜在jaxb类的程序包名称,则还可以给定上下文路径来创建上下文。

如果上述方法不可行,您还可以在运行时根据要序列化的对象创建类列表。我认为最好尝试重构您的代码以使其不必要。以下代码未经测试:

Set<Class> classes = new HashSet<Class>();classes.add(p.getClass());for (A a : p.getThings()) {    classes.add(a.getClass());}JAXBContext context = JAXBContext.newInstance(classes.toArray(new Class[classes.size()]));


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5506491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存