我有一个具有以下属性的Product类:namedateCreatedcreatedByUserdateModifiedmodifiedByUser,并且我正在使用JAXB编组。我想要这样的输出:

<product>
    <name>...</name>
    <auditInfo>
        <dateCreated>...</dateCreated>
        <createdByUser>...</createdByUser>
        <dateModified>...</dateModified>
        <modifiedByUser>...</modifiedByUser>
    </auditInfo>
</product>

但理想情况下,我希望避免围绕这些属性创建单独的AuditInfo包装器类。

有没有办法用JAXB注释做到这一点?我看着@XmlElementWrapper,但这仅用于集合。

最佳答案

不,我不相信。中介班是必要的。

您可以通过将AuditInfo作为Product中的嵌套内部类来烦恼,并在Product中添加getter和setter方法,以设置AuditInfo上的字段。 Product的客户端永远不需要知道。

public class Product {
   private @XmlElement AuditInfo auditInfo = new AuditInfo();

   public void setDateCreated(...) {
      auditInfo.dateCreated = ...
   }

   public static class AuditInfo {
      private @XmlElement String dateCreated;
   }
}

10-06 03:32