JAXB 在反序列化 XML 时,如果 XML 元素的值为空字符串,那么默认会将其转换为 null。这是因为 JAXB 认为空字符串和 null 是等价的,因此在反序列化时将其转换为 null 可以方便后续的处理。 如果你希望在反序列化时将空字符串转换为空字符串而不是 null,可以通过设置 JAXB 的 Unmarshaller 的 Property 来实现。具体来说,可以设置 javax.xml.bind.context.factory 属性为 com.sun.xml.internal.bind.v2.ContextFactory,然后设置 com.sun.xml.internal.bind.treatEverythingNillable 属性为 true。 示例代码如下: ``` JAXBContext jaxbContext = JAXBContext.newInstance(MyClass.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); unmarshaller.setProperty("javax.xml.bind.context.factory", "com.sun.xml.internal.bind.v2.ContextFactory"); unmarshaller.setProperty("com.sun.xml.internal.bind.treatEverythingNillable", true); MyClass myObject = (MyClass) unmarshaller.unmarshal(xmlFile); ``` 这样,在反序列化时,空字符串就会被转换为空字符串而不是 null。