gpt4 book ai didi

java - JAXB 构造函数注入(inject)

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:30 25 4
gpt4 key购买 nike

我想知道如何使 JAXB 编译器使我的 XML 模式中的某些元素在 Java 类定义中声明为最终元素,我还希望能够控制不同的构造函数,就像我希望的那样一个构造函数,它可以使用类中包含的完整参数列表以及 JAXB 所需的默认私有(private)构造函数创建对象。

有什么帮助吗?

谢谢。

这是我正在尝试做的一个例子:

<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 规范不支持映射到那样的类。

您可以使用以下代码来避免使用 set 方法。只要有公共(public)默认构造函数,您就可以根据需要添加其他构造函数。

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; }
}

如果您想将上面描述的类与非默认构造函数和标记为 final 的字段一起使用,则需要创建一个 XmlAdapter:

关于java - JAXB 构造函数注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com