我有返回的xml,

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


我在List<UniequeTest>中使用JaxB将其解组。
显然,该列表必须具有多个相同的对象。
我可以在取消编组的同时使其成为唯一的吗?

我不能同时使用HashSet或LinkedHashSet使它变得不唯一。我的意思是,如果该对象下的值相同,则我在Unmarshall列表中想要的是不唯一对象。

最佳答案

您最终可以使用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。)。

10-01 12:47