我是 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/