我最近生成了由 JAXB 生成的两个版本的 Java 类。所以我得到了两个包:V1_0 和 V2_0
我注意到我只生成了一个 ObjectFactory。问题是这个 ObjectFactory 特定于一个版本(这里它特定于我的版本 v1_0)。
所以问题是:我可以配置 JAXB 以允许为每个版本创建一个 ObjectFactory 吗?
非常感谢。
我最近生成了由 JAXB 生成的两个版本的 Java 类。所以我得到了两个包:V1_0 和 V2_0
我注意到我只生成了一个 ObjectFactory。问题是这个 ObjectFactory 特定于一个版本(这里它特定于我的版本 v1_0)。
所以问题是:我可以配置 JAXB 以允许为每个版本创建一个 ObjectFactory 吗?
非常感谢。
如果 API 的两个版本在同一个命名空间中,那就太可怕了!您将让一代的对象工厂覆盖另一代产生的对象工厂(或抑制;我忘记了xjc
实际上是哪个)。这对于 API 的客户来说也很可怕,因为他们不知道他们正在处理的 API 的版本(除非你正在做其他令人讨厌的技巧,这应该被劝阻;如果他们在同一个命名空间中,他们应该是相同的 API)。
解决方法是将两个 API 放在不同的命名空间中,以便将它们生成到具有不同对象工厂的不同包中。(还要注意任何使用 ;选项-p
的xjc
行为,这可能会导致事物进入同一个命名空间并给您带来这些覆盖问题。)
两个版本的一个对象工厂?不,这是不可能的。您在两个包中获得了两组类 - 一个对象工厂不可能同时为它们提供服务。