如何使用java.util.Optional生成JaxB类?

如何使用java.util.Optional生成JaxB类?,java,xsd,jaxb,maven-jaxb2-plugin,Java,Xsd,Jaxb,Maven Jaxb2 Plugin,我使用jaxb2 maven插件从给定的XSD生成JaxB类。 它很好用。 但是现在我想在生成的类中使用java.util.Optional。但是JaxB生成的类没有可选项。所以我不得不对每个变量进行空检查 有人知道如何配置jaxb2 maven插件以使用java.util.Optional吗 谢谢你的帮助 也许你可以找到更通用的方法,但我不确定这是否可行。 无论如何,您仍然可以为您想要可选的类型定义自定义适配器 下面是Integer的一个示例 首先,创建一个适配器 public final c

我使用jaxb2 maven插件从给定的XSD生成JaxB类。 它很好用。 但是现在我想在生成的类中使用java.util.Optional。但是JaxB生成的类没有可选项。所以我不得不对每个变量进行空检查

有人知道如何配置jaxb2 maven插件以使用java.util.Optional吗


谢谢你的帮助

也许你可以找到更通用的方法,但我不确定这是否可行。 无论如何,您仍然可以为您想要可选的类型定义自定义适配器

下面是Integer的一个示例

首先,创建一个适配器

public final class IntegerOptionalAdapter extends OptionalAdapter<Integer>
{
} 
公共最终类IntegerOptionalAdapter扩展了OptionalAdapter
{
} 
然后在绑定中使用此适配器

@XmlAttribute
@XmlJavaTypeAdapter(IntegerOptionalAdapter.class)
private Optional<Integer> someInteger;
@xmltattribute
@XmlJavaTypeAdapter(IntegerOptionalAdapter.class)
私有可选整数;

处理生成的类不是一个好选择。为什么不使用nillable=“true”字段来丰富xsd。我同意@Mark的观点,您应该避免修改任何生成的类。我发现了一个类似的问题,似乎可以在不修改生成的类的情况下使用自定义适配器:在字段中存储optional实际上不是一个好主意。最好在getters.@M.Prokhorov中创建它们,这实际上可能是个好主意。在这一点上,意见往往是分歧的,我可以肯定地看到赞成和反对这两种选择。