【发布时间】:2010-07-23 08:56:24
【问题描述】:
我想知道如何让 JAXB 编译器使我的 XML 模式中的某些元素在 java 类定义中声明为 final,并且我还希望能够控制不同的构造函数,就像我想要的那样一个构造函数,它可以使用包含在类中的完整参数列表以及 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; }
}
这可以实现吗?
【问题讨论】:
-
请给我们一些例子,包括你所说的模式组件的种类,以及你希望它们在 java 中如何表示。
-
原帖已编辑。有可能吗?
-
我不认为它是,不。据我所知,构造函数注入从未添加到 JAXB2 中,尽管我认为它是有计划的。
-
Kohsuke 解释了为什么这里不可能:weblogs.java.net/blog/kohsuke/archive/2005/02/…。就个人而言,我认为这是 Bull$%#$ 无论如何都已经使用 Unsafe 了。还有一个构造函数注入的JDK注解:docs.oracle.com/javase/6/docs/api/java/beans/…
标签: java jaxb customization constructor-injection