当前位置: 首页 > 知识库问答 >
问题:

用默认值初始化的JAXB对象

谭毅然
2023-03-14
    null

必需的

获取java对象(根元素),它完全表示xml和每个由默认值初始化的成员。

当我试图在不显式设置值的情况下marshall xml时,默认值并不能使sence...有什么方法可以在不自定义生成的类的情况下,用默认值填充xml吗?

.xsd的示例:

<xs:element name="document">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="d_int"/>
            <xs:element ref="d_double"/>
            <xs:element ref="d_string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="d_int" type="xs:int" default="-1"/>
<xs:element name="d_double" type="xs:double" default="-1.0"/>
<xs:element name="d_string" type="xs:string" default="false"/>

和java类:

public class Document {
    @XmlElement(name = "d_int", defaultValue = "-1")
    protected int dInt;
    @XmlElement(name = "d_double", defaultValue = "-1.0")
    protected double dDouble;
    @XmlElement(name = "d_string", required = true, defaultValue = "Default")
    protected String dString;
...
}

共有1个答案

曹育
2023-03-14

注释中的默认值仅在解封后有效。
解封此

<document>
   <d_int/>
   <d_double/>
   <d_string/>
</document>  

您将获得具有默认值的object(-1,-1.0,“default”)

如果要将默认值设置为编组,则应执行以下操作

public class Document {
    @XmlElement(name = "d_int", defaultValue = "-1")
    protected int dInt = 100;
    @XmlElement(name = "d_double", defaultValue = "-1.0")
    protected double dDouble = -100;
    @XmlElement(name = "d_string", required = true, defaultValue = "Default")
    protected String dString = "def";
...
}    
 类似资料:
  • 考虑以下代码 VS2013编译器发出以下警告: 警告C4351:新行为:数组“B::member”的元素将默认初始化1 这里有记载 使用C 11,并应用“默认初始化”的概念,意味着B. part的元素将不会被初始化。 但我认为,成员{}应该执行值初始化,而不是默认初始化。VS2013编译器是否损坏? 8.5美元/6 默认初始化类型为T的对象意味着:-如果T是(可能是cv限定的)类类型(第9条),则

  • 根据我的参考,基元类型具有默认值,对象为null。我测试了一段代码。 行将是指向变量的错误,表示,而在给定引用中,将作为默认值。但是,使用下面给定的代码,它将实际打印。 第一个代码可能会出什么问题?类变量的行为是否与局部变量不同?

  • 问题内容: 声明基元/对象时,它们是否已初始化? 哪些是默认值? 类成员 和 本地字段 的行为是什么? 在类成员上声明对象呢? 如下所示,这些是默认值: 请注意,对象初始化为 null 问题答案: 缺省值为is ,这是它将在JavaSE和JavaEE中具有的值,除非为其分配了另一个值。 Java(或任何其他原语)中不能有未初始化的类成员。 在您的示例中,您显示的是类成员,在另一个示例中,其显示的是

  • 问题内容: 如果未将显式值传递给方法,我想用一些默认值初始化方法的参数-像这样: 我得到了错误: 我该如何解决? 问题答案: 这里常见的习惯用法是将默认值设置为一些哨兵值用于此目的,这是典型值,然后您可以检查该值。 您可能还会看到用于哨兵的实例。 后一个版本的优点是可以传递给函数,但有一些缺点(请参见下面@larsmans的评论)。如果您不认为需要将有意义的参数传递给您的方法,那么我建议您使用它。

  • 问题内容: 众所周知,根据JLS7 p.4.12.5, 每个实例变量均使用默认值初始化。例如(1): 但是我一直认为,这样的类实现(2): 绝对等于示例(1)。我期望,复杂的Java编译器会看到(2)中的所有这些初始化值都是多余的,并忽略了它们。 但是突然对于这两个类,我们有两个不同的字节码。 例如(1): 例如(2): 问题是: 为什么?但这是显而易见的要优化的事情。什么原因? UPD: 我使用

  • I一个对象的初始化值,然后声明同一类的另一个对象,但默认情况下,第一个对象的值分配给第二个对象,而不是默认的空值。 } 是存储有关学生信息的类。 }在这里,我创建了两个对象,首先是初始化第一个对象(st1),然后我用默认对象声明第二个对象,并且在这两个对象上我都调用了同一个对象,为什么用第二个对象调用的方法正在打印传递给第一个对象的值为什么它不打印默认空值。 输出: “C:\Program Fil