java - JAXB,setter/getter 的注解

标签 java jaxb

@XmlType  
@XmlAccessorType(XmlAccessType.FIELD)  // here I need this access
public class User implements Serializable 
{  
     // ...  

     @XmlTransient
     private Set<Values> values;

     // ...

     @XmlElement
     private Set<History> getXmlHistory()
     {
         return new CustomSet<Values, History>(Values);
     }

     private void setXmlHistory(final Set<History> aHistory)
     {
         this.values = new HashSet<Values>();
     }  
}  

当我在 Java 代码中创建用户对象并在创建 XML 之后,一切正常。
但是,当我尝试从 XML 中获取用户对象时,字段 values 始终为 null。所以二传手不在这里工作。可能 setter 也需要一些注释?

XML 看起来像

<user>  
   ...  
      <xmlHistory>  
       // ... record 1 
      </xmlHistory>  
      <xmlHistory>  
      // ... record 2 
      </xmlHistory>  
</user>  

最佳答案

我不认为这是一个 JAXB 问题,因为以下模型可以工作:

package forum10617267;

import java.io.Serializable;
import java.util.*;
import javax.xml.bind.annotation.*;

@XmlType
@XmlAccessorType(XmlAccessType.FIELD) // here I need this access
public class User implements Serializable {

    @XmlTransient
    private Set<History> history = new HashSet<History>();

    @XmlElement
    private Set<History> getXmlHistory() {
         return history;
    }

    private void setXmlHistory(final Set<History> aHistory) {
        this.history = aHistory;
    }

}

您看到的问题是您在 get/set 方法中的逻辑的结果。由于您的 values 字段未初始化,我不确定 CustomSet 将如何更新它。

package forum10617267;

import java.io.Serializable;
import java.util.*;
import javax.xml.bind.annotation.*;

@XmlType
@XmlAccessorType(XmlAccessType.FIELD) // here I need this access
public class User implements Serializable {

    @XmlTransient
    private Set<Values> values;

    @XmlElement
    private Set<History> getXmlHistory() {
         return new CustomSet<Values, History>(values);
    }

    private void setXmlHistory(final Set<History> aHistory) {
        this.values = new HashSet<Values>();
    }

}

关于java - JAXB,setter/getter 的注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10617267/

相关文章:

java - 如何使 xml 模式与 JTable、xml java 相关(链接)?

java - 如何鼓励 JAXB 读取 XmlElement 内容字符串?

java - BigDecimal 除法抛出 ArithmeticException : Division by zero even when i check against it

java - 使用 JAXB/JAX-RS 将 XML 元素包装在子元素中

java - 如何使用 moxy 将 xsd 编译成一组等效的 java 对象?

java - 避免使用 lambda 表达式

java - 导入 javax.xml.bind.annotation.XmlRootElement 未解析

java - 快速静态键值映射

java - 如何对Flux进行移动窗口计算并将结果作为新的Flux输出

java - 数独算法无法正确回溯