Java jaxb解组器返回空hashmap,但将其设置为null
我为HashMap编写了一个XMLAdapter。在解组一个空的hashmap(由一个空数组表示)时,我初始化一个空的hashmap并返回它,如代码中所示Java jaxb解组器返回空hashmap,但将其设置为null,java,jaxb,Java,Jaxb,我为HashMap编写了一个XMLAdapter。在解组一个空的hashmap(由一个空数组表示)时,我初始化一个空的hashmap并返回它,如代码中所示 @Override public Map<ServiceAttributeVO, String> unmarshal(ServiceAttributeVOXMLMap serviceAttributeMap) throws Exception { Map<ServiceAttributeVO, String>
@Override
public Map<ServiceAttributeVO, String> unmarshal(ServiceAttributeVOXMLMap serviceAttributeMap) throws Exception {
Map<ServiceAttributeVO, String> r = new HashMap<ServiceAttributeVO, String>();
if (serviceAttributeMap.mapElementList == null) { //if empty list, return the empty hashmap
return r;
}
for (ServiceAttributeVOMapElement mapelement : serviceAttributeMap.mapElementList) {
r.put(mapelement.key, mapelement.value);
}
return r;
}
@覆盖
公共映射解组(ServiceAttributeVOXMLMap serviceAttributeMap)引发异常{
Map r=新的HashMap();
如果(serviceAttributeMap.mapElementList==null){//如果列表为空,则返回空hashmap
返回r;
}
对于(ServiceAttributeMapElement mapelement:serviceAttributeMap.mapElementList){
r、 put(mapelement.key、mapelement.value);
}
返回r;
}
有人会认为结果对象将包含这个空hashmap,但实际上hashmap的值为null
怎么办?在创建变量r之后还是返回变量r之后,变量r的值是否为null?我假设jaxb/jersey将使用r的值作为对象成员上setter的参数。在我返回变量r之前,它永远不会等于null,它将是一个(空)hashmap。但是,在解组后检查对象时,相应成员(应该是集合)的值等于null。您的变量r在创建后或返回后的值是否为null?我假设jaxb/jersey将使用r的值作为对象成员上的setter的参数。在我返回变量r之前,它永远不会等于null,它将是一个(空)hashmap。但是,在解组后检查对象时,相应成员(应为集合)的值等于null。