使用JaxB UnMarshalling具有唯一值

时间:2012-08-22 13:35:22

标签: java jaxb unmarshalling

我有xml返回了,

<UniequeTestList>
 <UniequeTest>
  <FirstName>a</FirstName>
  <LastName>b</LastName>
 </UniequeTest>
 <UniequeTest>
  <FirstName>a</FirstName>
  <LastName>b</LastName>
 </UniequeTest>
</UniequeTestList>

我在List<UniequeTest>中使用JaxB解组它。 显然,该列表必须具有相同的多个对象。 我可以在拆开它的同时使它成为unieque吗?

我无法使用HashSet或LinkedHashSet同时使其成为unieque。我的意思是,如果该对象下的值相同,我在Unmarshall列表中想要的是unieque对象。

1 个答案:

答案 0 :(得分:3)

最终可以使用JAXB Unmarshaller的监听器:

 class JAXBUnmarshallingListener extends Unmarshaller.Listener {

   @Override
   public void beforeUnmarshal(Object target, Object parent) {
   }

   @Override
   public void afterUnmarshal(Object target, Object parent) {
   }
 }

在回调方法中,您可以实现一个简单的缓存,并用您自己的唯一实例替换JAXB新创建的对象(之后新的JAXB实例将被垃圾收集,因为没有人继续引用它。请注意,此方法不会为您节省实例化的成本和这些对象的gc。