JAXB构造函数注入
我想知道如何让JAXB编译器使我的XML模式中的某些元素在java类定义中声明为final,并且我还想能够控制不同的构造函数,如我想要一个构造函数,它可以使用包含在类中的完整参数列表以及JAXB所需的默认私有构造函数来创建对象。JAXB构造函数注入
任何帮助?
谢谢。
这里是什么,我试图做一个例子:
<xs:complexType name="mycomplex">
<xs:all>
<xs:element name="myboolean" type="xs:boolean"/>
</xs:all>
</xs:complexType>
现在生成的代码看起来就像
public class mycomplex
{
protected boolean myboolean;
public boolean getMyboolean() { return myboolean; }
public void setMyboolean(boolean b) { this.myboolean = b; }
}
但我想编辑的架构,使它看起来如:
public class mycomplex
{
protected final boolean myboolean;
public mycomplex(boolean b) { this.myboolean = b; }
public boolean getMyboolean() { return myboolean; }
}
这可以实现吗?
没有一种标准的JAXB方法来生成类似这样的类,因为JAXB规范不支持映射到类。
您可以使用下面的代码来避免设置方法。只要有公共默认构造函数,就可以添加其他构造函数。
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlAccessorType(XmlAccessType.FIELD)
public class mycomplex
{
protected final boolean myboolean;
public boolean getMyboolean() { return myboolean; }
}
如果你想使用你使用非默认的构造函数上面描述和现场标志着最后,你需要创建一个XmlAdapter类:
非常感谢你的这一点,但这不完全是我所知寻找。我将解组数百个类,这意味着做这样的事情将会非常繁琐,因为我必须自己定义所有的东西,而且这些类都会随时变化 - 如果我不得不重新定义,非常耗时所有的事情。在数百个不同类别的更自动化过程中是否有适应这种行为的方式? 再次感谢。 – ExtremeCoder 2010-07-27 07:24:15
@BlaiseDoughan你有没有机会将http://docs.oracle.com/javase/6/docs/api/java/beans/ConstructorProperties.html添加到你的Moxy中? – 2012-10-24 16:30:47
@AdamGent - 您是否介意将此作为对以下增强请求的评论?:http://bugs.eclipse.org/328951 – 2012-10-24 16:37:04
我有类似的问题,我发现下面的库: http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#immutable
而现在一切都似乎很简单;)
请给我们的例子,包括排序架构你正在谈论的组件,以及你想如何用java表示它们。 – skaffman 2010-07-23 08:57:15
原创文章编辑。可能吗? – ExtremeCoder 2010-07-23 09:17:53
我不认为这是,不。据我所知,构造函数注入从未被添加到JAXB2,尽管我认为它是在一个点上计划的。 – skaffman 2010-07-23 16:51:18