Spring boot JAXBSring和普通字符串

Spring boot JAXBSring和普通字符串,spring-boot,Spring Boot,有什么区别?!我正在生成Java类和 我想知道这是否会有所不同 public String getFiuRefNumber() //vs public JAXBElement<String> getFiuRefNumber() 我假设您是从XSD生成Java类 在某些情况下,JAXB将生成一个JAXBElement。例如,当您的XSD中有一个可选的minOccurs=0且也可为nillable的元素时,它将执行此操作 这是因为,否则在Java中就无法区分根本不存在于XML中的元

有什么区别?!我正在生成Java类和 我想知道这是否会有所不同

public String getFiuRefNumber()

//vs

public JAXBElement<String> getFiuRefNumber()

我假设您是从XSD生成Java类

在某些情况下,JAXB将生成一个JAXBElement。例如,当您的XSD中有一个可选的minOccurs=0且也可为nillable的元素时,它将执行此操作

这是因为,否则在Java中就无法区分根本不存在于XML中的元素和存在于XML中但具有显式xsi:nil=true属性的元素

当字段是JAXBElement时,可以做出这样的区别:notpresentinxml=>Java字段将为null,presentinxml但带有xsi:nil=true=>Java字段将不为null,但将设置为没有值的JAXBElement

如果希望避免获取JAXBElement字段,则可以修改XSD,使元素既不是可选的也不是可为零的,或者可以使用绑定配置文件显式指定不需要元素包装器的元素