java - JAXB 默认值

标签 java jaxb

我是 JAXB 新手。我正在尝试使用 JAXB 解码 Foo 对象。但是,未设置默认值。请告诉我我做错了什么

public class TestJAXBDefault{
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = "foo")
    public static class Foo {
        @XmlElement(defaultValue = "Hello")
        protected String bar;
    }

    @Test
    public void testDefaultValue() {
        Foo foo = JAXB.unmarshal(new StringReader("<foo></foo>"), Foo.class);
        Assert.assertNotNull(foo.bar);
    }
}

最佳答案

您将字段 Foo.bar 映射到 XML 元素(通过使用 @XmlElement)。 解码文档时,bar 字段的将被设置为bar 元素的内容。当 bar 元素存在但为空时,将使用注释中指定的默认值。如果缺少,则将为null

<foo></foo>               -> Foo.bar is null
<foo><bar/></foo>         -> Foo.bar is "Hello"
<foo><bar></bar></foo>    -> Foo.bar is "Hello"
<foo><bar>baz</bar></foo> -> Foo.bar is "baz"

关于java - JAXB 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076817/

相关文章:

java - 发现 jni4net 样本

java - 为什么不应该声明一个受继承保护的变量?

java - 在不同的java类中使用已经初始化的类,

java - 从数据库同步实体管理器

java - java游戏开发中的窗口崩溃

java - 如果一个类有@XmlElement 属性,它不能有@XmlValue 属性

java - JAXB 编码和泛型

java - 使用泛型和基类时 Jaxb XML 命名空间不正确

java - JAXB 解码时出错

java - 如何在 XML 模式中表示自定义 Java 类?